Mysql 效能優化隨筆

2021-07-30 11:28:25 字數 1235 閱讀 6042

今天,解決乙個在大量資料環境下,查詢mysql資料庫恢復的功能丟資料問題。在除錯過程中發現乙個現象,半個小時大約才插入了2.5萬條記錄。12小時才能插入60多萬條記錄。小量資料恢復是沒有問題。只有在大量資料條件下恢復採用問題,200多萬條記錄的資料庫恢復,我得恢復到猴年馬月啊。正好今天時間寬鬆。優化它一下。

分階段計時之後,發現是插入資料庫的時間最長。之前的核心設計是採用sql模板方式(insert into table1 (c1,c2) values(@c1,@c2))實現的。每插入一條記錄,重新填充一次模板即可。好處是不用關注特殊字元和資料型別,但平均時間在0.1秒/條。也是十分頭疼的。

檢視目前配置

show variables like '%max_allowed_packet%';

顯示的結果為:

+--------------------+---------+

| variable_name      | value   |

+--------------------+---------+

| max_allowed_packet | 1048576 |

+--------------------+---------+

以上說明目前的配置是:1m

修改方法

1) 方法1

可以編輯my.cnf來修改(windows下my.ini),在[mysqld]段或者mysql的server配置段進行修改。

max_allowed_packet = 500m

如果找不到my.cnf可以通過

mysql --help | grep my.cnf

去尋找my.cnf檔案。

2) 方法2

進入mysql server

在mysql 命令列中執行

set global max_allowed_packet = 500*1024*1024

然後關閉掉這此mysql server鏈結,再進入。

show variables like '%max_allowed_packet%';

檢視下max_allowed_packet是否編輯成功

然後又也出現了特殊字元問題。什麼單引號、什麼斜槓問題。

全部通過之後,發現速度飛快。提公升了不止10倍效率。

不過,這裡還有乙個隱患。在模組化設計的框架下,如果單條語句的通道占用時間過長,會導致其他語句的排隊進而超時。所以我們不能只關注整體效率,還要關注區域性效率。

如何同時提高整體和區域性效率,是我們要思考的重點。

mysql效能優化 mysql效能優化

優化方式 1.空間換時間 冗餘 2.時間換空間 字段優先使用型別 int date char varchar text 索引型別 btree索引 hash索引 索引的葉子下,存放乙個資訊指向所在行的資料位址。btree有利於範圍查詢,hash有利於精確查詢。btree用的更多一些。btree索引的常...

mysql的效能優化 mysql效能優化

檢視安裝指令碼 select version 非互動式超時時間,如jdbc show global variables like wait timeout 互動式超時時間,如資料庫工具 show global variables like interactive timeout show sessi...

mysql 效能優化 命令 mysql效能優化

發現問題 當發現程式執行比較慢的時候,首先排除物力資源問題之後,就將注意力轉向mysq資料庫 1 首先確定執行慢的sql語句 mysql show full processlist 2 確認低效的查詢 多次執行第一步發現time耗費大的sql語句。檢視耗費的時間。3 分析效能 為sql生成乙個執行計...