mysql效能問題

2021-08-31 17:48:30 字數 2216 閱讀 9960

最近專案使用mysql資料庫遇到了效能問題。單錶400w以上資料時, 增,刪,改,查 的速度都明顯下降。

我們是做呼叫中心的,平均1秒鐘就要處理20個呼叫,所以 最最保守的計算 1秒鐘也要對單錶進行20次插入操作,還有更多的查詢操作,所以對效能要求略高。(有點兒跑題。。。。)

遇到了問題就要解決,優化!我們優化的步驟如下(過程中遇到的困難略):

1.優化索引,將所有sql語句,尤其是速度慢的都拿出來分析,一條一條的分析。(利用 explain )要讓所有查詢都使用到索引。

2.優化mysql資料庫本身,對my.cnf(my.ini)檔案進行優化。但是個人覺得效果不是很明顯(請牛人指導。)

my.cnf檔案配置如下。(4核cpu 4g 記憶體)這個my.cnf 具體問題具體分析,配置起來也有很多事兒比較有講究的。

所以需要逐步除錯。(切忌不可大量修改後再重啟mysql....有可能啟動失敗。)

[client]

port=3306

[mysql]

default-character-set=utf8

[mysqld]

port=3306

basedir="d:/program files/mysql/mysql server 5.1/"

default-character-set=utf8

default-storage-engine=innodb

sql-mode="strict_trans_tables,no_auto_create_user,no_engine_substitution"

max_connections=1000

query_cache_size=120m

table_cache=1024m

tmp_table_size=32m

thread_cache_size=64

myisam_max_sort_file_size=100g

myisam_sort_buffer_size=64m

key_buffer_size=512m

max_allowed_packet = 32m

max_heap_table_size = 32m

table_open_cache = 512m

thread_concurrency = 8

innodb_lock_wait_timeout = 50

bulk_insert_buffer_size = 64m

key_cache_block_size=2048

skip-external-locking

skip-name-resolve

read_buffer_size=8m

read_rnd_buffer_size=8m

sort_buffer_size=64m

innodb_additional_mem_pool_size=20m

innodb_flush_log_at_trx_commit=1

innodb_log_buffer_size=8m

innodb_buffer_pool_size=512m

innodb_log_file_size=24m

innodb_thread_concurrency=10

3.分表 分表是解決大資料量的最佳方案。

我們的mysql資料庫 單錶400萬 以上資料的時候就不符合效能要求了(我們對效能要求有點兒高)。但是我們一天產生的資料量就達到了單錶200萬。。總不能1天就建立一套表出來吧?? 那1,2年以後 資料庫就會有600多套表(一套表有幾十張呢,也就是上萬張單錶),看著都頭疼呀。。。。。 

4.從業務上解決,實現曲線救國。(這也是我們最後採用的方法,這個方法不一定適用其他業務)

我們的業務是這樣,1小時對流水資料結轉一次,生成統計資料。

最後決定生成插入流水資料的時候分2套流水表插入(一套用來儲存流水資料,另一套用來結轉統計資料。)

為什麼要分成2套呢?

為了效能,用來儲存流水資料的那套表就不去對它進行操作了。(起到備份資料之用。)

用來結轉成統計資料的那套流水表,在結轉結束之後就會刪除掉以結轉的資料。

這樣一來,結轉用的那套流水表的資料量就不會持續增長,也就保證了資料結轉的效率。

希望對其他人 有點兒小啟示。。。。。。

請大家不要笑我。。我的mysql 是盜版的。。。沒有mysql dba給我調優。更沒有人會給我訂製我們專用的mysql

只能這樣曲線救國的解決了。。。。

mysql 效能問題

偶然發現mysql的這個問題 note innodb page cleaner 1000ms intended loop took 上面跑的是mysql5.7 應用就是個zabbix buffpool size 35g 總32核心和64g 這個問題基本的出現 應該就是你的innodb 的io 能力存...

mysql 效能檢視 MySQL查詢效能問題排查

mysql資料庫的效能問題排查是十分複雜的,具體方法視場景而定,這裡只做大致思路分析。1.整體考慮導致查詢效能低下的各種因素 導致sql查詢變慢的原因是多元化的,在遇到問題時首先要有乙個全方位的思考 網路問題導致 應用層導致 中是否有不合理的查詢 快取失效導致查詢風暴耗盡磁碟資源 mysql伺服器效...

mysql效能問題定位

使用mysql作為基礎資料庫的應用,可能會遇到一些資料庫方面的效能問題,我們可以通過一些方法進行問題定位。以下介紹可以定位效能問題的四種方法,歡迎拍磚。一 開啟慢查詢日誌 記錄執行查詢時間大於long query time的sql,long query time預設為2s show variable...