Назад | Перейти на главную страницу

Простая блокировка запросов MySQL до перезапуска базы данных

У меня есть очень простой запрос, который выполняется за 216 мс на моей машине разработки, но занимал более 45 секунд на моем рабочем сервере, то есть до тех пор, пока я не перезапущу MySQL там:

UPDATE `forum_categories` SET `post_count` = COALESCE(`post_count`, 0) + 1 WHERE (`id` = 20)

Здесь SHOW STATUS значение непосредственно перед перезапуском:

+-----------------------------------+--------------+
| Variable_name                     | Value        |
+-----------------------------------+--------------+
| Aborted_clients                   | 356          | 
| Aborted_connects                  | 1            | 
| Binlog_cache_disk_use             | 0            | 
| Binlog_cache_use                  | 0            | 
| Bytes_received                    | 288          | 
| Bytes_sent                        | 17160        | 
| Com_admin_commands                | 0            | 
| Com_assign_to_keycache            | 0            | 
| Com_alter_db                      | 0            | 
| Com_alter_db_upgrade              | 0            | 
| Com_alter_event                   | 0            | 
| Com_alter_function                | 0            | 
| Com_alter_procedure               | 0            | 
| Com_alter_server                  | 0            | 
| Com_alter_table                   | 0            | 
| Com_alter_tablespace              | 0            | 
| Com_analyze                       | 0            | 
| Com_backup_table                  | 0            | 
| Com_begin                         | 0            | 
| Com_binlog                        | 0            | 
| Com_call_procedure                | 0            | 
| Com_change_db                     | 0            | 
| Com_change_master                 | 0            | 
| Com_check                         | 0            | 
| Com_checksum                      | 0            | 
| Com_commit                        | 0            | 
| Com_create_db                     | 0            | 
| Com_create_event                  | 0            | 
| Com_create_function               | 0            | 
| Com_create_index                  | 0            | 
| Com_create_procedure              | 0            | 
| Com_create_server                 | 0            | 
| Com_create_table                  | 0            | 
| Com_create_trigger                | 0            | 
| Com_create_udf                    | 0            | 
| Com_create_user                   | 0            | 
| Com_create_view                   | 0            | 
| Com_dealloc_sql                   | 0            | 
| Com_delete                        | 0            | 
| Com_delete_multi                  | 0            | 
| Com_do                            | 0            | 
| Com_drop_db                       | 0            | 
| Com_drop_event                    | 0            | 
| Com_drop_function                 | 0            | 
| Com_drop_index                    | 0            | 
| Com_drop_procedure                | 0            | 
| Com_drop_server                   | 0            | 
| Com_drop_table                    | 0            | 
| Com_drop_trigger                  | 0            | 
| Com_drop_user                     | 0            | 
| Com_drop_view                     | 0            | 
| Com_empty_query                   | 0            | 
| Com_execute_sql                   | 0            | 
| Com_flush                         | 0            | 
| Com_grant                         | 0            | 
| Com_ha_close                      | 0            | 
| Com_ha_open                       | 0            | 
| Com_ha_read                       | 0            | 
| Com_help                          | 0            | 
| Com_insert                        | 0            | 
| Com_insert_select                 | 0            | 
| Com_install_plugin                | 0            | 
| Com_kill                          | 0            | 
| Com_load                          | 0            | 
| Com_load_master_data              | 0            | 
| Com_load_master_table             | 0            | 
| Com_lock_tables                   | 0            | 
| Com_optimize                      | 0            | 
| Com_preload_keys                  | 0            | 
| Com_prepare_sql                   | 0            | 
| Com_purge                         | 0            | 
| Com_purge_before_date             | 0            | 
| Com_release_savepoint             | 0            | 
| Com_rename_table                  | 0            | 
| Com_rename_user                   | 0            | 
| Com_repair                        | 0            | 
| Com_replace                       | 0            | 
| Com_replace_select                | 0            | 
| Com_reset                         | 0            | 
| Com_restore_table                 | 0            | 
| Com_revoke                        | 0            | 
| Com_revoke_all                    | 0            | 
| Com_rollback                      | 0            | 
| Com_rollback_to_savepoint         | 0            | 
| Com_savepoint                     | 0            | 
| Com_select                        | 1            | 
| Com_set_option                    | 0            | 
| Com_show_authors                  | 0            | 
| Com_show_binlog_events            | 0            | 
| Com_show_binlogs                  | 0            | 
| Com_show_charsets                 | 0            | 
| Com_show_collations               | 0            | 
| Com_show_column_types             | 0            | 
| Com_show_contributors             | 0            | 
| Com_show_create_db                | 0            | 
| Com_show_create_event             | 0            | 
| Com_show_create_func              | 0            | 
| Com_show_create_proc              | 0            | 
| Com_show_create_table             | 0            | 
| Com_show_create_trigger           | 0            | 
| Com_show_databases                | 0            | 
| Com_show_engine_logs              | 0            | 
| Com_show_engine_mutex             | 0            | 
| Com_show_engine_status            | 0            | 
| Com_show_events                   | 0            | 
| Com_show_errors                   | 0            | 
| Com_show_fields                   | 0            | 
| Com_show_function_status          | 0            | 
| Com_show_grants                   | 0            | 
| Com_show_keys                     | 0            | 
| Com_show_master_status            | 0            | 
| Com_show_new_master               | 0            | 
| Com_show_open_tables              | 0            | 
| Com_show_plugins                  | 0            | 
| Com_show_privileges               | 0            | 
| Com_show_procedure_status         | 0            | 
| Com_show_processlist              | 8            | 
| Com_show_profile                  | 0            | 
| Com_show_profiles                 | 0            | 
| Com_show_slave_hosts              | 0            | 
| Com_show_slave_status             | 0            | 
| Com_show_status                   | 1            | 
| Com_show_storage_engines          | 0            | 
| Com_show_table_status             | 0            | 
| Com_show_tables                   | 0            | 
| Com_show_triggers                 | 0            | 
| Com_show_variables                | 0            | 
| Com_show_warnings                 | 0            | 
| Com_slave_start                   | 0            | 
| Com_slave_stop                    | 0            | 
| Com_stmt_close                    | 0            | 
| Com_stmt_execute                  | 0            | 
| Com_stmt_fetch                    | 0            | 
| Com_stmt_prepare                  | 0            | 
| Com_stmt_reprepare                | 0            | 
| Com_stmt_reset                    | 0            | 
| Com_stmt_send_long_data           | 0            | 
| Com_truncate                      | 0            | 
| Com_uninstall_plugin              | 0            | 
| Com_unlock_tables                 | 0            | 
| Com_update                        | 0            | 
| Com_update_multi                  | 0            | 
| Com_xa_commit                     | 0            | 
| Com_xa_end                        | 0            | 
| Com_xa_prepare                    | 0            | 
| Com_xa_recover                    | 0            | 
| Com_xa_rollback                   | 0            | 
| Com_xa_start                      | 0            | 
| Compression                       | OFF          | 
| Connections                       | 486          | 
| Created_tmp_disk_tables           | 0            | 
| Created_tmp_files                 | 13           | 
| Created_tmp_tables                | 0            | 
| Delayed_errors                    | 0            | 
| Delayed_insert_threads            | 0            | 
| Delayed_writes                    | 0            | 
| Flush_commands                    | 1            | 
| Handler_commit                    | 0            | 
| Handler_delete                    | 0            | 
| Handler_discover                  | 0            | 
| Handler_prepare                   | 0            | 
| Handler_read_first                | 0            | 
| Handler_read_key                  | 0            | 
| Handler_read_next                 | 0            | 
| Handler_read_prev                 | 0            | 
| Handler_read_rnd                  | 0            | 
| Handler_read_rnd_next             | 0            | 
| Handler_rollback                  | 0            | 
| Handler_savepoint                 | 0            | 
| Handler_savepoint_rollback        | 0            | 
| Handler_update                    | 0            | 
| Handler_write                     | 0            | 
| Innodb_buffer_pool_pages_data     | 439          | 
| Innodb_buffer_pool_pages_dirty    | 16           | 
| Innodb_buffer_pool_pages_flushed  | 342213       | 
| Innodb_buffer_pool_pages_free     | 0            | 
| Innodb_buffer_pool_pages_misc     | 73           | 
| Innodb_buffer_pool_pages_total    | 512          | 
| Innodb_buffer_pool_read_ahead_rnd | 766743       | 
| Innodb_buffer_pool_read_ahead_seq | 697962       | 
| Innodb_buffer_pool_read_requests  | 6614591621   | 
| Innodb_buffer_pool_reads          | 31600209     | 
| Innodb_buffer_pool_wait_free      | 0            | 
| Innodb_buffer_pool_write_requests | 2122755      | 
| Innodb_data_fsyncs                | 266343       | 
| Innodb_data_pending_fsyncs        | 0            | 
| Innodb_data_pending_reads         | 0            | 
| Innodb_data_pending_writes        | 0            | 
| Innodb_data_read                  | 796822818816 | 
| Innodb_data_reads                 | 34112076     | 
| Innodb_data_writes                | 556215       | 
| Innodb_data_written               | 11420234240  | 
| Innodb_dblwr_pages_written        | 342213       | 
| Innodb_dblwr_writes               | 18181        | 
| Innodb_log_waits                  | 0            | 
| Innodb_log_write_requests         | 221569       | 
| Innodb_log_writes                 | 223375       | 
| Innodb_os_log_fsyncs              | 230097       | 
| Innodb_os_log_pending_fsyncs      | 0            | 
| Innodb_os_log_pending_writes      | 0            | 
| Innodb_os_log_written             | 203197440    | 
| Innodb_page_size                  | 16384        | 
| Innodb_pages_created              | 3208         | 
| Innodb_pages_read                 | 48634093     | 
| Innodb_pages_written              | 342213       | 
| Innodb_row_lock_current_waits     | 11           | 
| Innodb_row_lock_time              | 6248224      | 
| Innodb_row_lock_time_avg          | 27769        | 
| Innodb_row_lock_time_max          | 51857        | 
| Innodb_row_lock_waits             | 225          | 
| Innodb_rows_deleted               | 106967       | 
| Innodb_rows_inserted              | 109771       | 
| Innodb_rows_read                  | 7740417900   | 
| Innodb_rows_updated               | 98427        | 
| Key_blocks_not_flushed            | 0            | 
| Key_blocks_unused                 | 13396        | 
| Key_blocks_used                   | 3            | 
| Key_read_requests                 | 78911        | 
| Key_reads                         | 0            | 
| Key_write_requests                | 2447         | 
| Key_writes                        | 0            | 
| Last_query_cost                   | 0.000000     | 
| Max_used_connections              | 31           | 
| Not_flushed_delayed_rows          | 0            | 
| Open_files                        | 46           | 
| Open_streams                      | 0            | 
| Open_table_definitions            | 101          | 
| Open_tables                       | 156          | 
| Opened_files                      | 108434       | 
| Opened_table_definitions          | 0            | 
| Opened_tables                     | 0            | 
| Prepared_stmt_count               | 0            | 
| Qcache_free_blocks                | 58150        | 
| Qcache_free_memory                | 309389896    | 
| Qcache_hits                       | 6750944      | 
| Qcache_inserts                    | 7589394      | 
| Qcache_lowmem_prunes              | 0            | 
| Qcache_not_cached                 | 487929       | 
| Qcache_queries_in_cache           | 105847       | 
| Qcache_total_blocks               | 270852       | 
| Queries                           | 15733827     | 
| Questions                         | 10           | 
| Rpl_status                        | NULL         | 
| Select_full_join                  | 0            | 
| Select_full_range_join            | 0            | 
| Select_range                      | 0            | 
| Select_range_check                | 0            | 
| Select_scan                       | 0            | 
| Slave_open_temp_tables            | 0            | 
| Slave_retried_transactions        | 0            | 
| Slave_running                     | OFF          | 
| Slow_launch_threads               | 0            | 
| Slow_queries                      | 0            | 
| Sort_merge_passes                 | 0            | 
| Sort_range                        | 0            | 
| Sort_rows                         | 0            | 
| Sort_scan                         | 0            | 
| Ssl_accept_renegotiates           | 0            | 
| Ssl_accepts                       | 0            | 
| Ssl_callback_cache_hits           | 0            | 
| Ssl_cipher                        |              | 
| Ssl_cipher_list                   |              | 
| Ssl_client_connects               | 0            | 
| Ssl_connect_renegotiates          | 0            | 
| Ssl_ctx_verify_depth              | 0            | 
| Ssl_ctx_verify_mode               | 0            | 
| Ssl_default_timeout               | 0            | 
| Ssl_finished_accepts              | 0            | 
| Ssl_finished_connects             | 0            | 
| Ssl_session_cache_hits            | 0            | 
| Ssl_session_cache_misses          | 0            | 
| Ssl_session_cache_mode            | NONE         | 
| Ssl_session_cache_overflows       | 0            | 
| Ssl_session_cache_size            | 0            | 
| Ssl_session_cache_timeouts        | 0            | 
| Ssl_sessions_reused               | 0            | 
| Ssl_used_session_cache_entries    | 0            | 
| Ssl_verify_depth                  | 0            | 
| Ssl_verify_mode                   | 0            | 
| Ssl_version                       |              | 
| Table_locks_immediate             | 8315915      | 
| Table_locks_waited                | 0            | 
| Tc_log_max_pages_used             | 0            | 
| Tc_log_page_size                  | 0            | 
| Tc_log_page_waits                 | 0            | 
| Threads_cached                    | 3            | 
| Threads_connected                 | 28           | 
| Threads_created                   | 31           | 
| Threads_running                   | 13           | 
| Uptime                            | 66323        | 
| Uptime_since_flush_status         | 66323        | 
+-----------------------------------+--------------+

Схема таблицы следующая:

mysql> SHOW CREATE TABLE forum_categories\G
*************************** 1. row ***************************
       Table: forum_categories
Create Table: CREATE TABLE `forum_categories` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ancestry` varchar(255) DEFAULT NULL,
  `title` varchar(255) NOT NULL,
  `description` text,
  `position` int(11) DEFAULT '0',
  `published` tinyint(1) DEFAULT '1',
  `exclusive` tinyint(1) DEFAULT '0',
  `show_homepage` tinyint(1) DEFAULT '1',
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL,
  `post_count` int(11) DEFAULT '0',
  `slug` varchar(255) DEFAULT NULL,
  `last_post_id` int(11) DEFAULT NULL,
  `exclusive_level` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `index_forum_categories_on_ancestry` (`ancestry`),
  KEY `index_forum_categories_on_exclusive` (`exclusive`),
  KEY `index_forum_categories_on_last_post_id` (`last_post_id`),
  KEY `index_forum_categories_on_position` (`position`),
  KEY `index_forum_categories_on_published` (`published`),
  KEY `index_forum_categories_on_show_homepage` (`show_homepage`),
  KEY `index_forum_categories_on_post_count` (`post_count`)
) ENGINE=InnoDB AUTO_INCREMENT=45 DEFAULT CHARSET=utf8

К вашему сведению - у машины много оперативной памяти, и средняя загрузка обычно близка к 1. Версия MySQL - 5.1.41.

Любые идеи? Спасибо.

Используйте mysqltuner.pl и посмотрите, что там написано.