Mysql 慢速简单更新查询

Mysql 慢速简单更新查询,mysql,sql,performance,innodb,Mysql,Sql,Performance,Innodb,我对mysql的奇怪行为有疑问。 对于约3000行的表,在where子句中仅使用主键的简单更新查询有时需要2秒钟以上。根据SHOW PROFILE ALL命令,它卡在“查询结束”阶段,上下文值高(200+) 在大多数情况下,它是连接中的第一个查询 示例查询: UPDATE `users` set last_portal_login = NOW() , ip = 1464635301 , browser = "chrome" where uid = 2021 创建表查询: 以下

我对mysql的奇怪行为有疑问。 对于约3000行的表,在where子句中仅使用主键的简单更新查询有时需要2秒钟以上。根据
SHOW PROFILE ALL
命令,它卡在“查询结束”阶段,上下文值高(200+)

在大多数情况下,它是连接中的第一个查询

示例查询:

UPDATE `users`
set last_portal_login = NOW()
    , ip = 1464635301
    , browser = "chrome"
where uid = 2021
创建表查询:

以下是InnoDB配置:
“innodb\u自适应\u刷新”,“打开”
“innodb\u自适应\u哈希\u索引”,“打开”
‘innodb_附加_成员_池_大小’、‘8388608’
'innodb_自动扩展_增量','8'
'innodb_autoinc_锁定模式','1'
'innodb_缓冲区_池_实例','1'
'innodb_缓冲区_池_大小','268435456'
“innodb\u更改\u缓冲”,“全部”
“innodb_校验和”,“打开”
“innodb_提交_并发”,“0”
“innodb\u并发\u票据”,“500”
“innodb_数据_文件_路径”,“ibdata1:10M:自动扩展”
“innodb_数据_主页_目录”
“innodb_doublewrite”,“打开”
“innodb\u快速关闭”,“1”
'innodb_文件格式','羚羊'
“innodb文件格式检查”,“打开”
“innodb\u文件\u格式\u最大值”、“羚羊”
“innodb_文件每_表”,“关闭”
'innodb_刷新_日志_在_trx_提交,'2'
'innodb_flush_method','O_DIRECT'
“innodb\u强制加载\u损坏”,“关闭”
“innodb\u强制恢复”,“0”
“innodb_io_容量”,“200”
“innodb\u大前缀”,“关闭”
“innodb\u锁定\u等待\u超时”,“50”
“innodb\u锁定\u不安全\u用于\u binlog”,“关闭”
“innodb日志缓冲区大小”,“8388608”
“innodb日志文件大小”,“67108864”
“innodb\u日志\u文件\u在\u组中”,“2”
“innodb_log_group_home_dir”,“/”
'innodb_max_dirty_pages_pct','75'
'innodb_max_purge_lag','0'
“innodb\u镜像的\u日志\u组”,“1”
‘innodb_old_blocks_pct’、‘37’
“innodb\u old\u阻塞时间”,“0”
“innodb_打开_文件”,“300”
“innodb\u打印所有死锁”,“关闭”
“innodb\u清除\u批量大小”,“20”
“innodb_清除_线程”,“0”
“innodb\u随机\u预读”,“关闭”
'innodb\u预读\u阈值','56'
“innodb_读取_io_线程”,“4”
“innodb\u复制\u延迟”,“0”
“innodb\u回滚\u打开\u超时”,“关闭”
“innodb_回滚_段”,“128”
“innodb\u旋转\u等待\u延迟”,“6”
“innodb_统计方法”,“空值等于”
“innodb_元数据上的统计数据”,“打开”
“innodb_统计数据_示例_页面”,“8”
“innodb\u严格\u模式”,“关闭”
“innodb_支持_xa”,“打开”
“innodb\u同步\u自旋\u循环”,“30”
“innodb_表锁定”,“打开”
“innodb_线程_并发”,“0”
“innodb线程睡眠延迟”,“10000”
'innodb_use_native_aio','打开'
'innodb_use_sys_malloc','打开'
“innodb_版本”、“5.5.30”
“innodb_写入_io_线程”,“4”

Mysql版本:来自dotdeb.org的5.5.30,连接基于unix套接字


我应该怎么做才能解决这个问题?

尝试utf8\u general\u ci/ascii,可能用于枚举,或者改用varchar。enum维护起来很痛苦,它并没有给出任何改进,但有时查询在“查询结束”时需要2秒钟以上的时间。实际上,我认为,将enum更改为varchar会降低速度。将更新转换为SELECT,看看需要多长时间,并在此处发布解释SELECT的结果这些查询通常很快,只是有时(每隔几分钟)会出现问题。查询:解释扩展选择上次门户登录、ip、浏览器、NOW()从
用户
中,其中uid=2021结果:“1”、“简单”、“用户”、“常量”、“主要”、“主要”、“4”、“常量”、“1”、“100.00”,“重要事项:通常情况下,显示查询配置文件中“查询结束”的“上下文自愿”值为0,只有在经济放缓期间,它才处于高位 CREATE TABLE
users
(
uid
int(10) unsigned NOT NULL,
login
char(50) COLLATE utf8_polish_ci NOT NULL,
hide_me
tinyint(1) unsigned NOT NULL DEFAULT '0',
addon
int(10) unsigned NOT NULL DEFAULT '0',
protocol
float unsigned NOT NULL DEFAULT '0',
mode
enum('firefox','lite','chrome','opera') COLLATE utf8_polish_ci DEFAULT NULL,
browser
enum('firefox','chrome','opera','ie','safari') COLLATE utf8_polish_ci DEFAULT NULL,
last_login
datetime DEFAULT NULL,
last_portal_login
datetime DEFAULT NULL,
ip
int(10) unsigned DEFAULT NULL, PRIMARY KEY (
uid
), UNIQUE KEY
login
(
login
) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci$$ 'innodb_adaptive_flushing', 'ON' 'innodb_adaptive_hash_index', 'ON' 'innodb_additional_mem_pool_size', '8388608' 'innodb_autoextend_increment', '8' 'innodb_autoinc_lock_mode', '1' 'innodb_buffer_pool_instances', '1' 'innodb_buffer_pool_size', '268435456' 'innodb_change_buffering', 'all' 'innodb_checksums', 'ON' 'innodb_commit_concurrency', '0' 'innodb_concurrency_tickets', '500' 'innodb_data_file_path', 'ibdata1:10M:autoextend' 'innodb_data_home_dir', '' 'innodb_doublewrite', 'ON' 'innodb_fast_shutdown', '1' 'innodb_file_format', 'Antelope' 'innodb_file_format_check', 'ON' 'innodb_file_format_max', 'Antelope' 'innodb_file_per_table', 'OFF' 'innodb_flush_log_at_trx_commit', '2' 'innodb_flush_method', 'O_DIRECT' 'innodb_force_load_corrupted', 'OFF' 'innodb_force_recovery', '0' 'innodb_io_capacity', '200' 'innodb_large_prefix', 'OFF' 'innodb_lock_wait_timeout', '50' 'innodb_locks_unsafe_for_binlog', 'OFF' 'innodb_log_buffer_size', '8388608' 'innodb_log_file_size', '67108864' 'innodb_log_files_in_group', '2' 'innodb_log_group_home_dir', './' 'innodb_max_dirty_pages_pct', '75' 'innodb_max_purge_lag', '0' 'innodb_mirrored_log_groups', '1' 'innodb_old_blocks_pct', '37' 'innodb_old_blocks_time', '0' 'innodb_open_files', '300' 'innodb_print_all_deadlocks', 'OFF' 'innodb_purge_batch_size', '20' 'innodb_purge_threads', '0' 'innodb_random_read_ahead', 'OFF' 'innodb_read_ahead_threshold', '56' 'innodb_read_io_threads', '4' 'innodb_replication_delay', '0' 'innodb_rollback_on_timeout', 'OFF' 'innodb_rollback_segments', '128' 'innodb_spin_wait_delay', '6' 'innodb_stats_method', 'nulls_equal' 'innodb_stats_on_metadata', 'ON' 'innodb_stats_sample_pages', '8' 'innodb_strict_mode', 'OFF' 'innodb_support_xa', 'ON' 'innodb_sync_spin_loops', '30' 'innodb_table_locks', 'ON' 'innodb_thread_concurrency', '0' 'innodb_thread_sleep_delay', '10000' 'innodb_use_native_aio', 'ON' 'innodb_use_sys_malloc', 'ON' 'innodb_version', '5.5.30' 'innodb_write_io_threads', '4'