Skip to content

Latest commit

 

History

History
87 lines (73 loc) · 3.17 KB

2.28_sql_statistic.md

File metadata and controls

87 lines (73 loc) · 3.17 KB

2.28 sql统计

2.28.1 介绍

指标:统计dble中的事务、后端节点执行sql的(CRUD)次数、耗时、以及返回的行数(或影响行数)
维度:业务端下发的sql、dble内部下发至后端节点的sql
性能:当开启此功能后会存在5%~15%的性能下降(不同场景,性能下降比例不同);影响性能因素有:并发数、表的分片数、复杂查询、query返回行数、statisticQueueSize
其他:某些场景统计不全(比如:1.sharding用户下,dble层面解析错误的sql;2.rwsplit用户下,语法报错的sql;3.sharding与rwsplit对隐式提交支持度不同等)、 被回滚事务也参与统计
可视化建议:将数据吐给类似prometheus的第三方监控工具,这样比直接使用dble统计表格更加直观

2.28.2 bootstrap.cnf中sql统计的相关配置

#  开启statistic的开关,默认关闭;0-关闭,1-开启
#-DenableStatistic=1

#  统计表的大小,默认1024
#-DassociateTablesByEntryByUserTableSize=1024
#-DfrontendByBackendByEntryByUserTableSize=1024
#-DtableByUserByEntryTableSize=1024

#  内部实现机制用到的队列大小,值必须为2的次方,默认4096
#-DstatisticQueueSize=4096

# 采样率,默认为0即关闭,采样率是[0,100]之间的整数,单位是 %。
#-DsamplingRate=0

# sql_log 表格大小
#-DsqlLogTableSize=1024

2.28.3 管理端命令

2.28.3.1 show @@statistic

查询statistic的开关、表格大小

show @@statistic;
+-----------------------------------------+-------+
| NAME                                    | VALUE |
+-----------------------------------------+-------+
| statistic                               | OFF   |
| associateTablesByEntryByUserTableSize   | 1024  |
| frontendByBackendByEntryByUserTableSize | 1024  |
| tableByUserByEntryTableSize             | 1024  |
| samplingRate                            | 0     |
| sqlLogTableSize                         | 1024  |
+-----------------------------------------+-------+
6 rows in set (0.01 sec)

2.28.3.2 disable @@statistic

关闭sql统计

disable @@statistic;
Query OK, 1 row affected (0.01 sec)

2.28.3.3 enable @@statistic

开启sql统计

enable @@statistic;
Query OK, 1 row affected (4.26 sec)

2.28.3.4 reload @@statistic_table_size = ? [where table='?' | where table in (dble_information.tableA,...)]

重置统计表的大小

reload @@statistic_table_size = 90;
Query OK, 1 row affected (0.02 sec)

reload @@statistic_table_size = 90 where table = 'sql_statistic_by_table_by_user_by_entry';
Query OK, 1 row affected (0.02 sec)

reload @@statistic_table_size = 90 where table in(sql_statistic_by_table_by_user_by_entry,sql_statistic_by_associate_tables_by_entry_by_user);
Query OK, 1 row affected (0.02 sec)

reload @@statistic_table_size = 90 where table = 'sql_log';
Query OK, 1 row affected (0.02 sec)

2.28.5 reload @@samplingRate=?

设置采样率

reload @@samplingRate=90;
Query OK, 1 row affected (0.01 sec)

2.28.6 统计的表格

sql_statistic_by_frontend_by_backend_by_entry_by_user、sql_statistic_by_table_by_user_by_entry、sql_statistic_by_associate_tables_by_entry_by_user、 sql_log

  • 支持truncate命令