这么多的问题!!对于您的第一点,如果您开始导致创建临时表的全表扫描或连接,您可能会开始注意到性能问题.您可以通过查看查询的EXPLAIN输出来跟踪此信息.以下是EXPLAIN的一些信息:
对于设置,理想情况下,如果您可以将整个数据库放在内存中,那就太棒了.以下是可能最有助于调整的变量:
innodb_buffer_pool_size=8192M
innodb_additional_mem_pool_size=512M
innodb_log_buffer_size=8M
innodb_flush_method = O_DIRECT
key_buffer_size=4096M
read_buffer_size=1M
read_rnd_buffer_size=10M
sort_buffer_size=1M
join_buffer_size=1M
tmp_table_size=32M
你会想要使大多数这些大到合理(你会想要研究其中的一些,因为有些是每个连接,有些是全局的).你提到了SHOW INNODB STATUS这是一个很好的起点,试着看看这些领域:
--------
FILE I/O
--------
Pending normal aio reads: 0, aio writes: 0,
ibuf aio reads: 0, log i/o's: 0, sync i/o's: 0
Pending flushes (fsync) log: 0; buffer pool: 0
28889 OS file reads, 52982178 OS file writes, 35063424 OS fsyncs
0.00 reads/s, 0 avg bytes/read, 2.67 writes/s, 2.67 fsyncs/s
这些应该告诉你你是否受到IO的约束.然后检查:
----------------------
BUFFER POOL AND MEMORY
----------------------
Free buffers 342668
确保你有免费的缓冲区.
关于你要监控什么的最后一个问题,越多越好.我使用OpenNMS来监控我们的MySQL服务器性能.以下是我们目前趋势/警示的重大变化:
EventCount
Uptime
Bytes_received
Bytes_sent
Com_delete
Com_delete_multi
Com_insert
Com_insert_select
Com_select
Com_stmt_execute
Com_update
Com_update_multi
Created_tmp_disk_tables
Created_tmp_tables
key_buffer_size
key_cache_block_size
Key_blocks_unused
Key_read_requests
Key_reads
Key_write_requests
Key_writes
Open_files
Open_tables
table_open_cache
Questions
Slow_queries
Connections
Threads_created
Threads_cached
Threads_connected
Threads_running