Andy McCurdy wrote:

I've been seeing some weirdness w/ MySQL and InnoDB over the past few days. I have a database that's entirely using InnoDB. The database is roughly 4.5G (one datafile) and contains a little over 50 tables. The web applications that hit this database do about 85-90% reads and 10-15% writes. Whenever a write comes in, it seems that subsequent reads get blocked to the _ENTIRE DATABASE_. What really confuses me is that reads even to other tables that aren't any way involved with the table that's being written to are waiting until the write completes. I do not use any foreign key relationships which could block a parent row.

Whenever I run "show processlist", everything looks fine until a write comes in. Reads are answered < 1 sec, and generally don't even appear on the processlist. However, as soon as a write hits, all of the reads are in a state of "NULL" until the write completes. This problem is compounded when several different writes happen from different connections at the same time. It leads to the MySQL server blocking long enough that the number of reads in the queue exceed the number of max connections. Once the writes happen, all of the read queries in the queue get answered and the normal processing continues.

I've included two samples from the "show processlist" command. They were taken approx. 1 second apart and show the growing amount of reads when writes are in the queue. I've removed the User and Host columns as they don't seem to be relevant as well as trimmed the state column down. I've also included the my.cnf config file and an output of "show status".

Additionally, I'm running Redhat 7.3 - kernel ver. 2.4.20-28.7bigmem #1 SMP

Any help on eliminating this bottleneck would be greatly appreciated!
Thanks.
-andy


================================= process list 1 =================================


+----------+------+-------------+--------+---------+------------------------------------
| Id | db | Command | Time | State | Info
+----------+------+-------------+--------+---------+------------------------------------
| 2972920 | NULL | Binlog Dump | 463909 | Has sen | NULL
| 2972930 | NULL | Binlog Dump | 463909 | Has sen | NULL
| 10954259 | NULL | Query | 0 | NULL | show processlist
| 10962986 | gne | Sleep | 4 | | NULL
| 10962987 | gne | Sleep | 4 | | NULL
| 10962997 | gne | Query | 3 | NULL | SELECT r.*, ui.username FROM review
| 10963003 | gne | Query | 2 | NULL | SELECT * FROM clan WHERE id='142'
| 10963018 | gne | Query | 3 | NULL | SELECT * FROM clan WHERE id='274'
| 10963019 | gne | Query | 3 | update | INSERT INTO rating (ref_type_id, re
| 10963020 | gne | Query | 2 | NULL | SELECT * FROM clan WHERE id='55'
| 10963021 | gne | Query | 3 | NULL | SELECT urs_id FROM user_info_new WH
| 10963022 | gne | Query | 3 | NULL | SELECT r.*, ui.username FROM review
| 10963023 | gne | Query | 3 | NULL | SELECT r.*, ui.username FROM review
| 10963024 | gne | Query | 2 | NULL | SELECT count(*) AS count FROM pm_me
| 10963025 | gne | Query | 2 | NULL | SELECT * FROM contact WHERE user_id
| 10963026 | gne | Query | 2 | NULL | SELECT * FROM clan WHERE id='729'
| 10963027 | gne | Query | 2 | NULL | SELECT r.*, ui.username FROM review
| 10963028 | gne | Query | 2 | NULL | select r.review_id from review r wh
| 10963029 | gne | Query | 2 | NULL | SELECT urs_id FROM user_info_new WH
| 10963030 | gne | Query | 2 | update | INSERT INTO pm_message SET id=NULL,
| 10963031 | gne | Query | 2 | NULL | SELECT urs_id FROM user_info_new WH
| 10963032 | gne | Query | 2 | NULL | SELECT r.*, ui.username FROM review
| 10963033 | gne | Query | 2 | NULL | select r.review_id from review r wh
| 10963034 | gne | Query | 2 | NULL | SELECT urs_id FROM user_info_new WH
| 10963035 | gne | Query | 2 | NULL | SELECT r.*, ui.username FROM review
| 10963036 | gne | Query | 2 | NULL | SELECT urs_id FROM user_info_new WH
| 10963037 | gne | Query | 2 | NULL | SELECT c.* FROM clan_pid cp, clan c
| 10963038 | gne | Query | 2 | NULL | SELECT * FROM pm_message WHERE id =
| 10963039 | gne | Query | 2 | NULL | SELECT r.*, ui.username FROM review
| 10963041 | gne | Query | 2 | NULL | SELECT c.* FROM clan_pid cp, clan c
| 10963042 | gne | Query | 1 | NULL | select r.review_id from review r wh
| 10963043 | gne | Query | 1 | NULL | SELECT urs_id FROM user_info_new WH
| 10963045 | gne | Query | 1 | NULL | SELECT count(*) AS count FROM pm_me
| 10963046 | gne | Query | 1 | NULL | SELECT r.*, ui.username FROM review
| 10963047 | gne | Query | 1 | NULL | SELECT r.*, ui.username FROM review
| 10963048 | gne | Query | 1 | NULL | SELECT urs_id FROM user_info_new WH
| 10963049 | gne | Query | 1 | NULL | SELECT r.*, ui.username FROM review
| 10963050 | gne | Query | 1 | NULL | select r.review_id from review r wh
| 10963051 | gne | Query | 1 | NULL | SELECT urs_id FROM user_info_new WH
| 10963052 | gne | Query | 1 | NULL | SELECT * FROM clan WHERE id='331'
| 10963053 | gne | Query | 1 | NULL | SELECT urs_id FROM user_info_new WH
| 10963054 | gne | Query | 1 | NULL | SELECT r.*, ui.username FROM review
| 10963055 | gne | Query | 1 | NULL | SELECT r.*, ui.username FROM review
| 10963056 | gne | Query | 1 | NULL | SELECT urs_id FROM user_info_new WH
| 10963057 | gne | Query | 1 | NULL | SELECT r.*, ui.username FROM review
| 10963058 | gne | Query | 1 | NULL | SELECT r.*, ui.username FROM review
| 10963059 | gne | Query | 1 | NULL | SELECT c.* FROM clan_pid cp, clan c
+----------+------+-------------+--------+---------+------------------------------------



================================= process list 2 =================================


+----------+------+-------------+--------+--------+------------------------------------
| Id | db | Command | Time | State | Info
+----------+------+-------------+--------+--------+------------------------------------
| 2972920 | NULL | Binlog Dump | 463909 | Has sen| NULL
| 2972930 | NULL | Binlog Dump | 463909 | Has sen| NULL
| 10954259 | NULL | Query | 0 | NULL | show processlist
| 10962986 | gne | Sleep | 4 | | NULL
| 10962987 | gne | Sleep | 4 | | NULL
| 10962997 | gne | Query | 3 | NULL | SELECT r.*, ui.username FROM review
| 10963003 | gne | Query | 2 | NULL | SELECT * FROM clan WHERE id='142'
| 10963018 | gne | Query | 3 | NULL | SELECT * FROM clan WHERE id='274'
| 10963019 | gne | Query | 3 | update | INSERT INTO rating (ref_type_id, re
| 10963020 | gne | Query | 2 | NULL | SELECT * FROM clan WHERE id='55'
| 10963021 | gne | Query | 3 | NULL | SELECT urs_id FROM user_info_new WH
| 10963022 | gne | Query | 3 | NULL | SELECT r.*, ui.username FROM review
| 10963023 | gne | Query | 3 | NULL | SELECT r.*, ui.username FROM review
| 10963024 | gne | Query | 2 | NULL | SELECT count(*) AS count FROM pm_me
| 10963025 | gne | Query | 2 | NULL | SELECT * FROM contact WHERE user_id
| 10963026 | gne | Query | 2 | NULL | SELECT * FROM clan WHERE id='729'
| 10963027 | gne | Query | 2 | NULL | SELECT r.*, ui.username FROM review
| 10963028 | gne | Query | 2 | NULL | select r.review_id from review r wh
| 10963029 | gne | Query | 2 | NULL | SELECT urs_id FROM user_info_new WH
| 10963030 | gne | Query | 2 | update | INSERT INTO pm_message SET id=NULL,
| 10963031 | gne | Query | 2 | NULL | SELECT urs_id FROM user_info_new WH
| 10963032 | gne | Query | 2 | NULL | SELECT r.*, ui.username FROM review
| 10963033 | gne | Query | 2 | NULL | select r.review_id from review r wh
| 10963034 | gne | Query | 2 | NULL | SELECT urs_id FROM user_info_new WH
| 10963035 | gne | Query | 2 | NULL | SELECT r.*, ui.username FROM review
| 10963036 | gne | Query | 2 | NULL | SELECT urs_id FROM user_info_new WH
| 10963037 | gne | Query | 2 | NULL | SELECT c.* FROM clan_pid cp, clan c
| 10963038 | gne | Query | 2 | NULL | SELECT * FROM pm_message WHERE id =
| 10963039 | gne | Query | 2 | NULL | SELECT r.*, ui.username FROM review
| 10963041 | gne | Query | 2 | NULL | SELECT c.* FROM clan_pid cp, clan c
| 10963042 | gne | Query | 1 | NULL | select r.review_id from review r wh
| 10963043 | gne | Query | 1 | NULL | SELECT urs_id FROM user_info_new WH
| 10963045 | gne | Query | 1 | NULL | SELECT count(*) AS count FROM pm_me
| 10963046 | gne | Query | 1 | NULL | SELECT r.*, ui.username FROM review
| 10963047 | gne | Query | 1 | NULL | SELECT r.*, ui.username FROM review
| 10963048 | gne | Query | 1 | NULL | SELECT urs_id FROM user_info_new WH
| 10963049 | gne | Query | 1 | NULL | SELECT r.*, ui.username FROM review
| 10963050 | gne | Query | 1 | NULL | select r.review_id from review r wh
| 10963051 | gne | Query | 1 | NULL | SELECT urs_id FROM user_info_new WH
| 10963052 | gne | Query | 1 | NULL | SELECT * FROM clan WHERE id='331'
| 10963053 | gne | Query | 1 | NULL | SELECT urs_id FROM user_info_new WH
| 10963054 | gne | Query | 1 | NULL | SELECT r.*, ui.username FROM review
| 10963055 | gne | Query | 1 | NULL | SELECT r.*, ui.username FROM review
| 10963056 | gne | Query | 1 | NULL | SELECT urs_id FROM user_info_new WH
| 10963057 | gne | Query | 1 | NULL | SELECT r.*, ui.username FROM review
| 10963058 | gne | Query | 1 | NULL | SELECT r.*, ui.username FROM review
| 10963059 | gne | Query | 1 | NULL | SELECT c.* FROM clan_pid cp, clan c
| 10963061 | gne | Query | 0 | NULL | SELECT urs_id FROM user_info_new WH
| 10963062 | gne | Query | 0 | NULL | SELECT r.*, ui.username FROM review
| 10963063 | gne | Query | 0 | NULL | SELECT r.*, ui.username FROM review
| 10963064 | gne | Query | 0 | NULL | SELECT c.* FROM clan_pid cp, clan c
| 10963065 | gne | Query | 0 | NULL | SELECT * FROM clan_member where uni
| 10963066 | gne | Query | 0 | NULL | SELECT r.*, ui.username FROM review
| 10963067 | gne | Query | 0 | NULL | SELECT * FROM clan c, clan_member c
| 10963068 | gne | Query | 0 | NULL | SELECT c.* FROM clan_pid cp, clan c
| 10963069 | gne | Query | 0 | NULL | SELECT count(*) AS count FROM pm_me
+----------+------+-------------+--------+--------+------------------------------------






======================
my.cnf
======================
[mysqld]
log-error = /var/opt/mysql/error.log
log-bin
server-id = 600

set-variable = slave_net_timeout=3600
set-variable = net_read_timeout=3600
set-variable = query_cache_size=512M
set-variable = wait_timeout=10
set-variable = key_buffer_size=128M
set-variable = max_allowed_packet=1024000000
set-variable = table_cache=512
set-variable = sort_buffer=2M
set-variable = record_buffer=4M
set-variable = thread_cache=8
set-variable = tmp_table_size=64M
set-variable = thread_concurrency=4
set-variable = myisam_sort_buffer_size=256M
set-variable = max_binlog_size=1024000000
set-variable = ft_min_word_len=3
set-variable = ft_stopword_file=''
set-variable = long_query_time=1
set-variable = max_connections=400
set-variable = innodb_buffer_pool_size=512M
set-variable = max_connect_errors=999999999


==================================== server status values (show status) ==================================== +--------------------------+------------+ | Aborted_clients | 335329 | | Aborted_connects | 373166 | | Bytes_received | 1943964913 | | Bytes_sent | 1037459639 | | Com_admin_commands | 61 | | Com_alter_table | 1 | | Com_analyze | 0 | | Com_backup_table | 0 | | Com_begin | 0 | | Com_change_db | 11518911 | | Com_change_master | 0 | | Com_check | 0 | | Com_commit | 0 | | Com_create_db | 0 | | Com_create_function | 0 | | Com_create_index | 0 | | Com_create_table | 8 | | Com_delete | 19952 | | Com_delete_multi | 0 | | Com_drop_db | 0 | | Com_drop_function | 0 | | Com_drop_index | 0 | | Com_drop_table | 2 | | Com_flush | 1 | | Com_grant | 2 | | Com_ha_close | 0 | | Com_ha_open | 0 | | Com_ha_read | 0 | | Com_insert | 237294 | | Com_insert_select | 2400 | | Com_kill | 758 | | Com_load | 0 | | Com_load_master_data | 0 | | Com_load_master_table | 0 | | Com_lock_tables | 0 | | Com_optimize | 0 | | Com_purge | 0 | | Com_rename_table | 0 | | Com_repair | 0 | | Com_replace | 31107 | | Com_replace_select | 0 | | Com_reset | 0 | | Com_restore_table | 0 | | Com_revoke | 0 | | Com_rollback | 0 | | Com_savepoint | 0 | | Com_select | 22301021 | | Com_set_option | 49 | | Com_show_binlog_events | 0 | | Com_show_binlogs | 0 | | Com_show_create | 2 | | Com_show_databases | 31 | | Com_show_fields | 1129 | | Com_show_grants | 0 | | Com_show_keys | 13 | | Com_show_logs | 0 | | Com_show_master_status | 0 | | Com_show_new_master | 0 | | Com_show_open_tables | 0 | | Com_show_processlist | 34450 | | Com_show_slave_hosts | 6 | | Com_show_slave_status | 0 | | Com_show_status | 47 | | Com_show_innodb_status | 4 | | Com_show_tables | 51 | | Com_show_variables | 12 | | Com_slave_start | 0 | | Com_slave_stop | 0 | | Com_truncate | 18 | | Com_unlock_tables | 0 | | Com_update | 253907 | | Connections | 11927865 | | Created_tmp_disk_tables | 6751 | | Created_tmp_tables | 6753 | | Created_tmp_files | 358 | | Delayed_insert_threads | 0 | | Delayed_writes | 0 | | Delayed_errors | 0 | | Flush_commands | 1 | | Handler_commit | 2 | | Handler_delete | 17202 | | Handler_read_first | 991 | | Handler_read_key | 541415295 | | Handler_read_next | 340543222 | | Handler_read_prev | 0 | | Handler_read_rnd | 25605878 | | Handler_read_rnd_next | 1794754881 | | Handler_rollback | 3868360 | | Handler_update | 9501 | | Handler_write | 3358752 | | Key_blocks_used | 124690 | | Key_read_requests | 1091453021 | | Key_reads | 174764 | | Key_write_requests | 176791 | | Key_writes | 166926 | | Max_used_connections | 400 | | Not_flushed_key_blocks | 0 | | Not_flushed_delayed_rows | 0 | | Open_tables | 512 | | Open_files | 208 | | Open_streams | 0 | | Opened_tables | 56254 | | Questions | 77415469 | | Qcache_queries_in_cache | 207102 | | Qcache_inserts | 19047398 | | Qcache_hits | 31627612 | | Qcache_lowmem_prunes | 2766958 | | Qcache_not_cached | 3253542 | | Qcache_free_memory | 317973448 | | Qcache_free_blocks | 94546 | | Qcache_total_blocks | 508910 | | Rpl_status | NULL | | Select_full_join | 0 | | Select_full_range_join | 0 | | Select_range | 1026865 | | Select_range_check | 0 | | Select_scan | 11300 | | Slave_open_temp_tables | 0 | | Slave_running | OFF | | Slow_launch_threads | 3 | | Slow_queries | 305224 | | Sort_merge_passes | 0 | | Sort_range | 1291192 | | Sort_rows | 26291581 | | Sort_scan | 7175 | | Table_locks_immediate | 38768307 | | Table_locks_waited | 45913 | | Threads_cached | 0 | | Threads_created | 1190079 | | Threads_connected | 53 | | Threads_running | 43 | | Uptime | 692494 | +--------------------------+------------+







Andy,
mysql> show innodb status;

output and the mysql version number might help figure this out better.

walt


-- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]



Reply via email to