2014-01-08 221 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

感謝和問候,