首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >随机慢速MySQL查询

随机慢速MySQL查询
EN

Server Fault用户
提问于 2014-02-09 03:08:01
回答 1查看 1.8K关注 0票数 1

我知道这类问题经常出现。但我做了很多研究,尝试了很多不同的设置,但仍然有相同的问题:查询通常是非常快的,可以花3s到5s似乎是随机的。

服务器是一个具有32 an的i7-3770 (8核)。CPU使用率约为50%空闲,而不是CPU尖峰。不使用交换,空闲内存平均约10 is。我在CentOS 6上运行MySQL5.5.32。

已经为MySQL分配了9GB内存,它使用了大约2GB的内存。所有数据都应该存储在内存中(600 of的数据,700 of的索引)。

平均每秒的查询次数(没有真正的峰值):

  • 1.5选择
  • 0.2更新
  • 0.05插入

下面是一个查询示例,它只需几毫秒,但有时超过3s:

代码语言:javascript
复制
# Query_time: 4.337884  Lock_time: 0.050146 Rows_sent: 1  Rows_examined: 1
SELECT me.id, me.url, me.filename, me.instance_id, me.virtual_id, me.status, me.user_id, me.time_added, me.time_finished, me.priority, me.size, me.delay, me.flash_delay, me.tries, me.details, me.json_file, me.html, me.shots, me.shot_interval, me.screen_width, me.screen_height FROM Screenshots me WHERE ( me.id = '5992705' ); 

id是主键。

虽然我有比INSERT查询更多的SELECT,但是插入速度比SELECT慢。

我试过和测试的是:

  • 确保所有必需的索引都在那里,但没有多余的索引,也没有未使用的索引。
  • 当时没有CPU尖峰,没有IO尖峰,没有交换
  • 作为从MySQL的第二个实例,大多数选择查询都是在从服务器上完成的。
  • 删除和文本及等效数据类型
  • 调my.cnf

调优my.cnf很有帮助。我试过启用和禁用查询缓存,差别不大。

使用奴隶进行选择实际上使事情变得更糟了:我对主程序的查询较少,但它们可能高达12s!

下面是我当前的my.cf (本例中有查询缓存):

代码语言:javascript
复制
tmp_table_size                 = 32M
max_heap_table_size            = 32M
query_cache_type               = 1
query_cache_size               = 1M
thread_cache_size              = 50
open_files_limit               = 65535
table_definition_cache         = 1024
table_open_cache               = 4096

innodb_flush_method            = O_DIRECT
innodb_log_files_in_group      = 2
innodb_log_file_size           = 256M
innodb_log_buffer_size         = 8M
innodb_thread_concurrency      = 8
innodb_flush_log_at_trx_commit = 0
innodb_file_per_table          = 1
innodb_buffer_pool_size        = 9G

max_connections=1000
transaction-isolation          = READ-UNCOMMITTED 
innodb_locks_unsafe_for_binlog = 1
innodb_io_capacity             = 1000
innodb_change_buffering        = inserts
innodb_fast_shutdown           = 0

key_buffer_size                = 2G

我没有主意了。我找不到任何图案(频率、间隔等)。这将解释这些缓慢的查询。

EN

回答 1

Server Fault用户

发布于 2014-02-12 07:23:26

你的磁盘设置是什么?你没提过。听起来像是它的IO绑定。

innodb_io_capacity --在默认情况下,除非您有充分的理由或基准来证明您的设置是正确的,否则没有理由更改它。

我怀疑你把这个设定得太高了。InnoDB写线程每秒钟可以向磁盘抛出比它们所能处理的更多的数据,从而导致I/O排队。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/574241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档