MySQL 缺少主鍵的表的效能下降的原因
MySQL 為什麼缺少主鍵的表的效能下降?
因為每個Innodb表都是一個索引組織的表,每個Innodb表的 leaf level 都由一個鍵標識。如果表上定義了主鍵,則該主鍵標識每一行。
對於表上定義的每個附加索引(非主鍵索引),主鍵被附加在索引鍵上,以標識表葉級別的行。
當表上沒有定義主鍵時會發生什麼?
MySQL伺服器為每個錶行生成一個行ID,稱為DB_ROW_ID。DB_ROW_ID的大小是一個6位元組的自動遞增鍵。生成DB_ROW_ID使用dict_sys_get_new_row_id()函式,該函式轉換為資料字典互斥體。由dict0dict.cc建立的互斥體DICT_SYS。換句話說,對於插入到沒有主鍵的表中的每個新行,它需要在資料字典上鎖定以生成該鍵,因為生成的鍵在例項範圍內是 uniq的。資料字典互斥體DICT_SYS不僅用於生成DB _ ROW _ IDs,還用於Innodb Engine中的許多其他重要地方。因此,如果表缺少主鍵,MySQL伺服器例項上的爭用就會增加。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31383567/viewspace-2986946/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Mysql】mysql主鍵的缺少導致備庫hangMySql
- mysql主鍵的缺少導致備庫hangMySql
- MySQL的InnoDB引擎強烈建議使用自增主鍵的原因MySql
- MySQL主鍵的理解MySql
- Oracle主鍵與複合主鍵的效能分析Oracle
- MySQL不建議用UUID做innodb主鍵的幾條原因MySqlUI
- Mysql分庫分表的主鍵生成演算法MySql演算法
- MySQL 中的自增主鍵MySql
- MySQL新增自增主鍵的坑MySql
- mysql建表必須使用主鍵嗎MySql
- MYSQL 主從不一致的原因分析MySql
- PostgreSQL 建立主鍵自增表的 DDLSQL
- MYSQL 主鍵的那些 “有意思” 故事MySql
- 向Mysql主鍵自增長表中新增資料並返回主鍵MySql
- 在已存在的表結構上新增主鍵、外來鍵、聯合主鍵、聯合索引的例子索引
- 深入瞭解MySQL中的自增主鍵MySql
- MyBatis + MySQL返回插入成功後的主鍵idMyBatisMySql
- MySQL:雙主單寫 主庫偶爾出現大量延遲的原因MySql
- 主鍵與主鍵索引的關係索引
- MYSQL INNODB主鍵使用varchar和int的區別MySql
- 【mycat】mycat中配合mysql自增主鍵的使用MySql
- 父表修改與外來鍵的關係(主鍵DML與外來鍵的關係)
- MySQL 分割槽表,為什麼分割槽鍵必須是主鍵的一部分?MySql
- MySQL的主從複製與MySQL的主主複製MySql
- MySQL 偶爾抽風,效能突然下降MySql
- 缺少libstdc++.so.6庫的原因及解決辦法C++
- MySQL 8 新特性之自增主鍵的持久化MySql持久化
- mysql裡alter table 重定義主鍵的步驟:MySql
- [MySQL]為什麼主鍵最好是有序遞增的MySql
- 修改主鍵的SQLSQL
- MYSQL資料表損壞的原因分析和修復方法MySql
- 主鍵、自增主鍵、主鍵索引、唯一索引概念區別與效能區別索引
- [zt] 影響SQL效能的原因SQL
- mysql innodb 主鍵INT、BIGINT、VARCHAR併發插入效能對比MySql
- ORACLE 在缺少主鍵ID的情況下刪除重複資料,只保留一行Oracle
- MySQL 選錯索引的原因?MySql索引
- 新的主鍵和外來鍵的語法
- MySQL 預設排序真的是按主鍵來排序的嗎MySql排序