記一次MySql千萬級數據量單表按日分組查詢平均值的優化遇到的各種問題


1、單表千萬級數據量 子查詢 where  in 要比 where exists 快(親測查詢時間差了100倍)

2、需要對datetime類型進行group by時(眾所周知,函數不走索引),把日期的值拆分,比如要按日進行分組,拆分成 年、月、日字段,類型分別用smallint、tinyint、tinyint,建立復合索引(Year,Month,Day) 

3、數據量不大的臨時表的存儲引擎用engine=MEMORY ,優化效果很明顯。數據量太大的不建議,因為很吃內存,內存不夠數據可能會丟失數據或者中斷存儲過程

4、truncate是先執行drop操作,然后再執行create操作,執行完成后會恢復初始的表空間。(找資料時看到有文章說對於臨時表要先truncate再drop,差點被坑死,故有此一記)

 -------------------------------------------后續------------------------------------------------------

到生產環境給表加索引后,過了一晚數據庫出故障自動關閉了。正在查找原因。。。

原因大概找到了,有一個作業每10分鍾跑一次,作用是從千萬級數據量單表處查詢數據然后插入到另一個表,這個作業跑一次耗時大於40分鍾,跑到中途還報錯退出了。。。

然后千萬級數據量單表添加字段后也沒有初始化好,添加索引的字段存在null值,導致死鎖的發生。不斷被阻塞,最后導致mysql崩潰了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM