首頁  >  文章  >  資料庫  >  百萬級資料mysql測試環境介紹

百萬級資料mysql測試環境介紹

藏色散人
藏色散人轉載
2019-04-17 17:19:453782瀏覽

mysql 作為一款非常優秀的免費資料庫被廣泛的使用,平時我們開發的專案資料過百萬的時候不多。最近花了大量的時間來深入的研究mysql百萬級數據情況下的優化。遇到了很多問題並解決了他們,特此分享給大家。歡迎提出您的寶貴意見!

相關推薦:《MySQL教學

測試環境

資料總數300萬條佔用磁碟空間1G 左右

資料結構

表1 news [ 文章表 引擎 myisam 字符集 utf-8 ]
-----------------------------------------------------
idint11主键自动增加
cateint11索引
titlevarchar200标题(便于基础搜索做了索引)
contenttext文章正文
dateint11文章发布时间(时间戳形式)
表2 cate [ 文章分类表 引擎 myisam 字符集 utf-8 ]
-----------------------------------------------------
cate_idint11主键自动增加
cate_namevarchar200文章标题

查詢總數

myIsam 引擎下
select count(*) as total from news
//耗时 0.001秒 极快 
//带上条件
select count(*) as total from news where cate = 1
耗时 0.046秒 可以接受的速度
innodb 引擎下
select count(*) as total from news
//耗时 0.7秒 很慢
select count(*) as total from news where cate = 1
耗时 0.7秒 很慢

為什麼2種引擎查詢速度相差這麼大?

InnoDB 中不保存表格的具體行數,也就是說,執行select count(*) from table時,InnoDB要掃描一遍整個表來計算有多少行。

MyISAM只要簡單的讀出保存好的行數即可。

注意的是,當count(*)語句包含 where條件時,兩種表的運算有些不同,InnoDB類型的表用count(*)或count(主鍵),加上where col 條件。其中col列是表的主鍵之外的其他具有唯一約束索引的列。這樣查詢時速度會很快。就是可以避免全表掃描。

總結

mysql 在300萬條資料(myisam引擎)情況下使用count(*) 進行資料總數查詢包含條件(正確設定索引)運行時間正常。對於經常進行讀取的資料我們建議使用myIsam引擎。

以上是百萬級資料mysql測試環境介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:hcoder.net。如有侵權,請聯絡admin@php.cn刪除