久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

關與InnoDB的知識點有哪些

189次閱讀
沒有評論

共計 1529 個字符,預計需要花費 4 分鐘才能閱讀完成。

本篇內容主要講解“關與 InnoDB 的知識點有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓丸趣 TV 小編來帶大家學習“關與 InnoDB 的知識點有哪些”吧!

一、關于 count(*)

知識點:MyISAM 會直接存儲總行數,InnoDB 則不會,需要按行掃描。

潛臺詞是,對于 select count(*) from t; 如果數據量大,MyISAM 會瞬間返回,而 InnoDB 則會一行行掃描。

實踐:數據量大的表,InnoDB 不要輕易 select count(*),性能消耗極大。

常見坑:只有查詢全表的總行數,MyISAM 才會直接返回結果,當加了 where 條件后,兩種存儲引擎的處理方式類似。

例如:t_user(uid, uname, age, sex);

uid PK

age index

select count(*) where age 18 and sex= F

查詢未成年少女個數,兩種存儲引擎的處理方式類似,都需要進行索引掃描。

啟示:不管哪種存儲引擎,都要建立好索引。

二、關于全文索引

知識點:MyISAM 支持全文索引,InnoDB5.6 之前不支持全文索引。

實踐:不管哪種存儲引擎,在數據量大并發量大的情況下,都不應該使用數據庫自帶的全文索引,會導致小量請求占用大量數據庫資源,而要使用《索引外置》的架構設計方法。

啟示:大數據量 + 高并發量的業務場景,全文索引,MyISAM 也不是最優之選。

三、關于事務

知識點:MyISAM 不支持事務,InnoDB 支持事務。

實踐:事務是選擇 InnoDB 非常誘人的原因之一,它提供了 commit,rollback,崩潰修復等能力。在系統異常崩潰時,MyISAM 有一定幾率造成文件損壞,這是非常煩的。但是,事務也非常耗性能,會影響吞吐量,建議只對一致性要求較高的業務使用復雜事務。

畫外音:Can t open file XXX.MYI . 碰到過么?

小技巧:MyISAM 可以通過 lock table 表鎖,來實現類似于事務的東西,但對數據庫性能影響較大,強烈不推薦使用。

四、關于外鍵

知識點:MyISAM 不支持外鍵,InnoDB 支持外鍵。

實踐:不管哪種存儲引擎,在數據量大并發量大的情況下,都不應該使用外鍵,而建議由應用程序保證完整性。

五、關于行鎖與表鎖

知識點:MyISAM 只支持表鎖,InnoDB 可以支持行鎖。

分析:

MyISAM:執行讀寫 SQL 語句時,會對表加鎖,所以數據量大,并發量高時,性能會急劇下降。

InnoDB:細粒度行鎖,在數據量大,并發量高時,性能比較優異。

實踐:網上常常說,select+insert 的業務用 MyISAM,因為 MyISAM 在文件尾部順序增加記錄速度極快。樓主的建議是,絕大部分業務是混合讀寫,只要數據量和并發量較大,一律使用 InnoDB。

常見坑:

InnoDB 的行鎖是實現在索引上的,而不是鎖在物理行記錄上。潛臺詞是,如果訪問沒有命中索引,也無法使用行鎖,將要退化為表鎖。

畫外音:Oracle 的行鎖實現機制不同。

例如:

t_user(uid, uname, age, sex) innodb;

uid PK

無其他索引

update t_user set age=10 where uid=1;

命中索引,行鎖。

update t_user set age=10 where uid != 1;

未命中索引,表鎖。

update t_user set age=10 where name= shenjian

無索引,表鎖。

啟示:InnoDB 務必建好索引,否則鎖粒度較大,會影響并發。

到此,相信大家對“關與 InnoDB 的知識點有哪些”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-27發表,共計1529字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 荥经县| 黑河市| 巢湖市| 夏津县| 彰化市| 麻阳| 苍溪县| 永福县| 云南省| 乌鲁木齐市| 玉山县| 万全县| 伽师县| 黎城县| 金塔县| 长汀县| 海兴县| 武宁县| 壤塘县| 清镇市| 濮阳县| 香港| 吴旗县| 兴化市| 富民县| 广丰县| 海口市| 尖扎县| 宝应县| 丹巴县| 剑阁县| 德昌县| 裕民县| 武清区| 车致| 彰武县| 盖州市| 喀什市| 南溪县| 垫江县| 舒城县|