TiDB SQL 优化案例

针对TiDB单表简单聚合查询耗时过长的问题,通过添加索引、调整并发度及优化SQL等方式,成功将查询时间从1分钟缩短至1秒内,大幅提升查询效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单表简单的聚合查询耗时1min+,领导要求在10s以内查询聚合出结果。


EXPLAIN ANALYZE
SELECT
        COUNT(s.id) pv,
        COUNT(DISTINCT IFNULL(s.user_id,s.uuid)) uv,
        ROUND(COUNT(s.id)/COUNT(DISTINCT IFNULL(s.user_id,s.uuid)),2) avgPv,
        ROUND(SUM(IFNULL(s.page_duration,0))/1000,2) duration,
        ROUND(SUM(IFNULL(s.page_duration,0))/COUNT(s.id)/1000,2) avgDuration
        FROM track.ods_online_log s
        WHERE s.data_time BETWEEN  20190318 and 20190326
        AND s.page_id= 'Product'
        AND JSON_UNQUOTE(JSON_EXTRACT(business,"$.ProductState")) = 2	;
添加索引

添加组合索引:

查看统计信息等:


将信息接入到clickhouse:

查询1s以内.



Variable_name                       VALUE   
----------------------------------  --------
tidb_hashagg_partial_concurrency    4       
tidb_distsql_scan_concurrency       15      
tidb_index_lookup_join_concurrency  4       
tidb_projection_concurrency         4       
tidb_hashagg_final_concurrency      4       
tidb_index_lookup_concurrency       4       
tidb_hash_join_concurrency          5       
tidb_checksum_table_concurrency     4       
tidb_index_serial_scan_concurrency  1       
tidb_build_stats_concurrency        4  


我们目前存储流量埋点信息 近三个月的数据量 5亿 现在查询速度达不到目标,看可否优化达到要求 或者看最大能优化到什么程度?

我们把同等量级的数据导入Hadoop中做比对看看看看查询性能如何。
 
 TiDB的优化:
 0.我们的硬件配置 
 1.我们的部署结构
 2.参数设置
 3.SQL优化:索引、分区、并行、统计信息、SQL编写

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值