2014-01-08 50 views
0

我有很多myisam表和一个innodb表,以及来自这些表的许多查询。连接到数据库是每秒从多台计算机检查这些计算机是否有更新或不。mysql长时间查询执行

2天前我改变了一些其他表INNODB,然后我面对原始表INNODB下面的高时间执行(是不是像这样)。所以今天我将它们返回给MyISAM,并保持INNODB表原样。

的MySQL进程样本(只显示了前工作正常的InnoDB表):

时间:100
状态:更新
信息:

UPDATE terminal_update SET `update_flag`=1 , `update_date`= '2013-12-27 19:29:17' , `download_date`= '2013-12-27 15:28:51' WHERE com_id = '14852' and update_id = '71' 

实现QueryCache状态:

Qcache_free_blocks  1 

Qcache_free_memory  90171104 

Qcache_hits    15853 

Qcache_inserts   7600 

Qcache_lowmem_prunes 0 

Qcache_not_cached  4607 

Qcache_queries_in_cache 4298 

Qcache_total_blocks  8775 

我该怎么办?

+0

检查是否有具有指数'com_id'和'update_id'列 – Rugal

+0

好的,我为update_id做了,com_id已经编入索引,谢谢很多 – George

回答

0

3000左右的终端连接到服务器,在任何时候都超过8小时,检查安装在桌面上为他们的软件更新

terminal_updates的表是最连接到表,我做到了INNODB

是我的mysql设置是好还是你有任何意见的任何领域?

的[mysqld]

innodb_file_per_table

MAX_CONNECTIONS = 5000

慢query_log

安全出现数据库

connect_timeout = 650

delayed_insert_timeout = 600

innodb_lock_wait_timeout = 100

innodb_rollback_on_timeout =关

innodb_flush_method = O_DIRECT

innodb_buffer_pool_size = 1G

interactive_timeout = 57600

net_read_timeout = 120

net_write_timeout = 120

slave_net_timeout = 7200

table_lock_wait_timeout = 100

WAIT_TIMEOUT = 2000

的table_cache = 350

thread_cache_size的= 128

query_cache_size变量= 128M

thread_concurrency = 2

join_buffer_size = 3M

read_buffer_size = 1M

sort_buffer_size的值= 2M

open_files_limit = 4840

感谢和问候,