对于 MySQL 查询,如何确定物理和逻辑 I/O?

Dav*_*all 8 mysql performance query

我习惯于在 Microsoft SQL 中有一个展示计划,并且懒得使用工具来调整 MySQL 查询。如何确定 MySQL 中查询的物理/逻辑 I/O?(EXPLAIN 显示索引选择,但如果可能的话,我想从 MySQL 服务器获得更多信息)。

Mor*_*ker 6

我推荐使用 Percona Server,用于慢查询日志的增强。我在 Stack Overflow 上回答了一个类似的问题:

/sf/ask/237524451/#3443944

特别看看这个(来自http://www.percona.com/docs/wiki/percona-server:features:slow_extended?redirect=1#changes_to_the_log_format):

# User@Host: mailboxer[mailboxer] @  [192.168.10.165]
# Thread_id: 11167745  Schema: board
# QC_Hit: No  Full_scan: No  Full_join: No  Tmp_table: Yes  Disk_tmp_table: No
# Filesort: Yes  Disk_filesort: No  Merge_passes: 0
# Query_time: 0.000659  Lock_time: 0.000070  Rows_sent: 0  Rows_examined: 30  Rows_affected: 0  Rows_read: 30
#   InnoDB_IO_r_ops: 1  InnoDB_IO_r_bytes: 16384  InnoDB_IO_r_wait: 0.028487
#   InnoDB_rec_lock_wait: 0.000000  InnoDB_queue_wait: 0.000000
#   InnoDB_pages_distinct: 5
select count(distinct author_id) from art87.article87 force index (forum_id) where forum_id = 240215 and thread_id = '710575' 
Run Code Online (Sandbox Code Playgroud)


Bri*_*ton 4

您可以通过查看磁盘查找次数来估计查询性能。

MySQL 手册的优化部分解释了估计 I/O 和后续调优要求的更有用的方法之一。探索读取次数并估计硬件 IO应该可以为您提供相当清晰的磁盘访问要求指示。此外,通过调整缓冲区大小,您将能够看到内存和缓存对查询的影响。