如何确定一条select语句返回了多少字节?

如何确定一条select语句返回了多少字节?

1、准备工作

1.1、准备一张10000000大表

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=test_user --mysql-password=test_user --mysql-db=test_db --tables=1 --table_size=10000000 oltp_read_write --db-ps-mode=disable prepare

1.2、设置慢查询日志

slow_query_log     | ON
long_query_time    | 1

2、方法一、Performance_Schema

mysql> select variable_value from performance_schema.status_by_thread 
      join performance_schema.threads using(thread_id) 
      where processlist_id=CONNECTION_ID() 
      and variable_name='Bytes_sent' into @before;


mysql> select * from sbtest1 where pad='50328648255-56985852825-00629775132-73783090655-90918476202'G
*************************** 1. row ***************************
 id: 5
  k: 5289083
  c: 05848131016-49737365047-61494872375-29450471021-12759747197-90410473835-31712590401-72789260457-13598426232-44299144230
pad: 50328648255-56985852825-00629775132-73783090655-90918476202

1 row in set (5.29 sec)

mysql> select format_bytes(variable_value - @before) query_size 
       from performance_schema.status_by_thread 
       join performance_schema.threads using(thread_id) 
       where processlist_id=CONNECTION_ID() 
       and variable_name='Bytes_sent' ;
+------------+
| query_size |
+------------+
|  423 bytes |
+------------+
1 row in set (0.00 sec)

3、方法二、慢查询日志的扩展参数

mysql> set persist log_slow_extra=ON;
Query OK, 0 rows affected (0.01 sec)

mysql> q

接着我们重复上述步骤并检查慢查询日志的类容:

Time: 2023-07-31T21:57:00.524749+08:00
User@Host: root[root] @ localhost []  Id:    10
Query_time: 5.297488  Lock_time: 0.000008 Rows_sent: 1  Rows_examined: 10000000 Thread_id: 10 Errno: 0 Killed: 0 Bytes_received: 100 Bytes_sent: 412 Read_first: 1 Read_last: 0 Read_key: 1 Read_next: 0 Read_prev: 0 Read_rnd: 0 Read_rnd_next: 10000001 Sort_merge_passes: 0 Sort_range_count: 0 Sort_rows: 0 Sort_scan_count: 0 Created_tmp_disk_tables: 0 Created_tmp_tables: 0 Start: 2023-07-31T21:56:55.227261+08:00 End: 2023-07-31T21:57:00.524749+08:00

use test_db;
SET timestamp=1690811815;
select * from sbtest1 where pad='50328648255-56985852825-00629775132-73783090655-90918476202';

Bytes_sent: 412

4、扩展

为什么两种方法的得到的**Bytes_sent:**不一致呢?


原文始发于微信公众号(库海无涯):如何确定一条select语句返回了多少字节?

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/241306.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!