我在my.cnf中启用了slow_query_log。
日志中没有选择查询。它们都是更新,删除和插入,在非常小的表上需要几秒钟。
以下是使用dumpslow分析的慢查询日志中的几个示例:
Count: 33 Time=2.96s (97s) Lock=0.00s (0s) Rows=0.0 (0), dbuser[dbuser]@localhost
UPDATE `users` SET `lockout_time` = NULL WHERE `users`.`id` = N
Count: 116 Time=2.82s (327s) Lock=0.00s (0s) Rows=0.0 (0), dbuser[dbuser]@localhost
DELETE FROM `client_searches` WHERE `client_searches`.`organisation_id` = N AND (session_id = N )
请注意,表'users'和'client_searches'是非常小的INNODB表(分别为494行和206行)
我不知道我是否在my.cnf或其他事情(下面发布)中犯了一个完整的错误。服务器是Ubuntu 14.04 VPS,内存为2Gb。我正在尝试解决如何调试此问题。
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
bind-address = 127.0.0.1
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
bind-address = 127.0.0.1
key_buffer = 500K
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
myisam-recover = BACKUP
max_connections = 40
table_open_cache = 800
table_definition_cache = 400
query_cache_limit = 1M
query_cache_size = 64M
log_error = /var/log/mysql/error.log
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 1
expire_logs_days = 10
max_binlog_size = 100M
innodb_buffer_pool_size = 600M
tmp_table_size = 32M
max_heap_table_size = 32M
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
[mysql]
#no-auto-rehash # faster start of mysql but no tab completition
[isamchk]
key_buffer = 16M
!includedir /etc/mysql/conf.d/
客户端搜索的表描述~300行,但在用户执行搜索时会定期删除和重新插入。始终出现在插入时间为几秒的慢查询中。
CREATE TABLE `client_searches` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`first_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`middle_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`last_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`known_as_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`gender` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`date_of_birth` date DEFAULT NULL,
`ethnicity_id` int(11) DEFAULT NULL,
`iwi_id` int(11) DEFAULT NULL,
`title` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`client_number` int(11) DEFAULT NULL,
`client_status` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`programme_id` int(11) DEFAULT NULL,
`user_id` int(11) DEFAULT NULL,
`created_on` date DEFAULT NULL,
`updated_on` date DEFAULT NULL,
`entry_date` date DEFAULT NULL,
`exit_date` date DEFAULT NULL,
`session_id` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`relation_last_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`relation_first_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`client_age_from` int(11) DEFAULT NULL,
`client_age_to` int(11) DEFAULT NULL,
`entry_date_from` date DEFAULT NULL,
`entry_date_to` date DEFAULT NULL,
`suburb_id` int(11) DEFAULT NULL,
`school_id` int(11) DEFAULT NULL,
`issue_id` int(11) DEFAULT NULL,
`exit_date_from` date DEFAULT NULL,
`exit_date_to` date DEFAULT NULL,
`referral_source_id` int(11) DEFAULT NULL,
`sort_order` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`activation_date_from` date DEFAULT NULL,
`activation_date_to` date DEFAULT NULL,
`assessment_date_from` date DEFAULT NULL,
`assessment_date_to` date DEFAULT NULL,
`is_assessed` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`drafts_exist` tinyint(1) DEFAULT '0',
`form_process` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`form_process_state` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`exclude_client_status` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`signed_off_by` int(11) DEFAULT NULL,
`not_signed_off` tinyint(1) DEFAULT '0',
`no_contact_weeks` int(11) DEFAULT NULL,
`active_weeks` int(11) DEFAULT NULL,
`waitlist_weeks` int(11) DEFAULT NULL,
`breakdown_type` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`secondary_breakdown_type` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`reminder_date` date DEFAULT NULL,
`waitlist_range_id` int(11) DEFAULT NULL,
`multi_programmes` mediumtext COLLATE utf8_unicode_ci,
`active_during_period_start_date` date DEFAULT NULL,
`active_during_period_end_date` date DEFAULT NULL,
`organisation_id` int(11) DEFAULT NULL,
`age_range_id` int(11) DEFAULT NULL,
`case_duration_range_id` int(11) DEFAULT NULL,
`entry_to_exit_range_id` int(11) DEFAULT NULL,
`town_id` int(11) DEFAULT NULL,
`status_id` int(11) DEFAULT NULL,
`exclude_status_id` int(11) DEFAULT NULL,
`multi_status` mediumtext COLLATE utf8_unicode_ci,
`outcome_id` int(11) DEFAULT NULL,
`nhi` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`time_spent_range_id` int(11) DEFAULT NULL,
`territorial_authority_id` int(11) DEFAULT NULL,
`income_source_id` int(11) DEFAULT NULL,
`service_type_id` int(11) DEFAULT NULL,
`population_group_id` int(11) DEFAULT NULL,
`abuse_type_id` int(11) DEFAULT NULL,
`abuse_duration_id` int(11) DEFAULT NULL,
`age_when_abused_id` int(11) DEFAULT NULL,
`client_role_id` int(11) DEFAULT NULL,
`client_type_id` int(11) DEFAULT NULL,
`location_id` int(11) DEFAULT NULL,
`needs_met_id` int(11) DEFAULT NULL,
`parent_abuse_history_id` int(11) DEFAULT NULL,
`perpetrator_id` int(11) DEFAULT NULL,
`threats_violence_id` int(11) DEFAULT NULL,
`childcare_provided_id` int(11) DEFAULT NULL,
`transport_provided_id` int(11) DEFAULT NULL,
`funding_source_id` int(11) DEFAULT NULL,
`exclude_statuses` mediumtext COLLATE utf8_unicode_ci,
`family_status_id` int(11) DEFAULT NULL,
`multi_family_status` mediumtext COLLATE utf8_unicode_ci,
`enrolled_with_pho_id` int(11) DEFAULT NULL,
`child_or_adult_id` int(11) DEFAULT NULL,
`referral_end_code_id` int(11) DEFAULT NULL,
`referral_to_id` int(11) DEFAULT NULL,
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
`pregnant_id` int(11) DEFAULT NULL,
`consent_id` int(11) DEFAULT NULL,
`specific_referrer_id` int(11) DEFAULT NULL,
`specific_referrer2_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=513018 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
客户表的表描述表~30,000行(从不出现在慢查询中)
CREATE TABLE `clients` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`client_number` int(11) DEFAULT NULL,
`client_status` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`programme_id` int(11) DEFAULT NULL,
`user_id` int(11) DEFAULT NULL,
`created_on` date DEFAULT NULL,
`updated_on` date DEFAULT NULL,
`entry_date` date DEFAULT NULL,
`exit_date` date DEFAULT NULL,
`referral_source_id` int(11) DEFAULT NULL,
`secondary_user_id` int(11) DEFAULT NULL,
`school_id` int(11) DEFAULT NULL,
`activation_date` date DEFAULT NULL,
`last_updated_by` int(11) DEFAULT NULL,
`activated_by` int(11) DEFAULT NULL,
`exited_by` int(11) DEFAULT NULL,
`related_client_id` int(11) DEFAULT NULL,
`assessment_date` date DEFAULT NULL,
`assessed_by` int(11) DEFAULT NULL,
`core_updated_on` date DEFAULT NULL,
`signed_off_date` date DEFAULT NULL,
`signed_off_by` int(11) DEFAULT NULL,
`reminder_date` date DEFAULT NULL,
`reminder_text` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`waitlist_range_id` int(11) DEFAULT NULL,
`organisation_id` int(11) DEFAULT NULL,
`age_range_id` int(11) DEFAULT NULL,
`case_duration_range_id` int(11) DEFAULT NULL,
`entry_to_exit_range_id` int(11) DEFAULT NULL,
`status_id` int(11) DEFAULT NULL,
`time_spent_range_id` int(11) DEFAULT NULL,
`person_id` int(11) DEFAULT NULL,
`income_source_id` int(11) DEFAULT NULL,
`territorial_authority_id` int(11) DEFAULT NULL,
`service_type_id` int(11) DEFAULT NULL,
`population_group_id` int(11) DEFAULT NULL,
`abuse_type_id` int(11) DEFAULT NULL,
`abuse_duration_id` int(11) DEFAULT NULL,
`age_when_abused_id` int(11) DEFAULT NULL,
`client_role_id` int(11) DEFAULT NULL,
`client_type_id` int(11) DEFAULT NULL,
`location_id` int(11) DEFAULT NULL,
`needs_met_id` int(11) DEFAULT NULL,
`parent_abuse_history_id` int(11) DEFAULT NULL,
`perpetrator_id` int(11) DEFAULT NULL,
`threats_violence_id` int(11) DEFAULT NULL,
`linked_client_id` int(11) DEFAULT NULL,
`outcome_id` int(11) DEFAULT NULL,
`childcare_provided_id` int(11) DEFAULT NULL,
`transport_provided_id` int(11) DEFAULT NULL,
`funding_source_id` int(11) DEFAULT NULL,
`family_status_id` int(11) DEFAULT NULL,
`family_client` tinyint(1) DEFAULT NULL,
`primary_family_client_id` int(11) DEFAULT NULL,
`enrolled_with_pho_id` int(11) DEFAULT NULL,
`child_or_adult_id` int(11) DEFAULT NULL,
`referral_end_code_id` int(11) DEFAULT NULL,
`referral_to_id` int(11) DEFAULT NULL,
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
`pregnant_id` int(11) DEFAULT NULL,
`consent_id` int(11) DEFAULT NULL,
`specific_referrer_id` int(11) DEFAULT NULL,
`specific_referrer2_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `index_clients_on_person_id` (`person_id`),
KEY `index_clients_on_user_id` (`user_id`),
KEY `index_clients_on_programme_id` (`programme_id`),
KEY `index_clients_on_organisation_id` (`organisation_id`)
) ENGINE=InnoDB AUTO_INCREMENT=48099 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
答案 0 :(得分:0)
让人想到的是:
users.id
),(organisation_id
),(session_id
),也许如果这将成为一个庞大的表格,(organisation_id
,{ {1}}),即一个两列索引,对于表来说,你的大小绝对不是必需的。你的my.cnf看起来不错,因为你有这么小的桌子:你绝对不需要为此优化你的配置。在尝试执行这些操作时,请确保您没有使用大量其他写入操作加载光盘。
答案 1 :(得分:0)
看来我的问题与非常慢的磁盘IO有关。
我跑的时候: dd bs = 1M count = 256 if = / dev / zero of = test conv = fdatasync 我的结果低于20 MB / s
我搬到了一个新的主机,速度超过300 MB / s,不再有问题。
我的托管公司建议我对my.cnf进行以下更改
innodb_flush_log_at_trx_commit=2
innodb_file_per_table=ON
innodb_flush_method=O_DSYNC
我做了更改,但没有真正的区别,而转移到新服务器就像......好吧......新服务器!