今天,解決乙個在大量資料環境下,查詢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生成乙個執行計...