2011-01-08 73 views
1

我有數據庫服務器和4個其他客戶端服務器。
客戶端服務器每次連接數不超過600.
它有很多緩慢的查詢,這是由於表鎖定。
我已將表中的一個更改爲InnoDB,它獲取更多更新和插入查詢。具有600多個連接的MySQL

請幫我優化數據庫。我有一個專用的數據庫服務器。

以下是my.cnf的設置。

[mysqld] 
tmpdir=/tmp 
open_files_limit=33628 
log-slow-queries=/slow-query.txt 
long_query_time=1 
log-queries-not-using-indexes=1 
concurrent_insert=2 


old_passwords=1 
datadir=/var/lib/mysql 

safe-show-database 
tmp_table_size = 128M 
max_heap_table_size = 128M 
query_cache_limit=8M 
query_cache_size=128M ## 32MB for every 1GB of RAM 
query_cache_type=1 
max_user_connections=800 
max_connections=800 
collation_server=utf8_unicode_ci 
character_set_server=utf8 


delayed_insert_timeout=40 

interactive_timeout=10 
wait_timeout=3600 
connect_timeout=20 
thread_cache_size=128 
key_buffer=128M ## 32MB for every 1GB of RAM 
join_buffer=1M 
max_connect_errors=20 
max_allowed_packet=16M 
table_cache=400 
record_buffer=1M 
sort_buffer_size=4M ## 1MB for every 1GB of RAM 
read_buffer_size=4M ## 1MB for every 1GB of RAM 
read_rnd_buffer_size=4M ## 1MB for every 1GB of RAM 
thread_concurrency=8 ## Number of CPUs x 2 
myisam_sort_buffer_size=32M 
server-id=1 

[mysql.server] 
user=mysql 


[safe_mysqld] 
open_files_limit=33628 
err-log=/var/log/mysqld.log 
pid-file=/var/lib/mysql/mysql.pid 

目前我使用非持久連接,是持久連接可以提高我的表現嗎?

+2

該ini文件不會幫助你,這是你的查詢和可能的表設計,這是殺了你,而不是數據庫本身。 – SilverbackNet 2011-01-08 05:47:05

+0

日誌表查詢更像7/10查詢。 平均每秒查詢次數高於70次/秒。 – itsoft3g 2011-01-08 06:52:35

回答

1

一種解決方案是爲所有讀操作設置附加的從數據庫服務器,並只寫入您的主數據庫。

但是從它的聲音來看,您可能會從myisam移動到innodb,使所有導致查詢緩慢的表受益匪淺,並且構建適當的索引以便您的查詢不會花費那麼長時間。

儘可能InnoDB的推移, 給你緩衝池大量內存顯著提高性能:

# You can set .._buffer_pool_size up to 50 - 80 % 
# of RAM but beware of setting memory usage too high 
innodb_buffer_pool_size = 6144M 

但真正優化配置是不會神奇地解決在查詢級別問題。

0

沒有看到查詢,結構和索引,我也相信@SliverbackNet關於查詢/表設計會導致你的問題。如果您的某些查詢在內容方面有點靜態,我會嘗試每日對某些表進行預先彙總,以簡化獲取某些結果的其他表,然後調整並優化一些更關鍵的查詢。查找哪些查詢可能導致最大的瓶頸問題。