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

InnoDB有什么用

共計(jì) 3180 個(gè)字符,預(yù)計(jì)需要花費(fèi) 8 分鐘才能閱讀完成。

丸趣 TV 小編給大家分享一下 InnoDB 有什么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

InnoDB 是一個(gè)通用的高性能、高可靠性的存儲(chǔ)引擎。從 MySQL 5.5 開(kāi)始,是 MySQL 默認(rèn)的存儲(chǔ)引擎

InnoDB 表關(guān)鍵特性

1.  DML 操作遵循 ACID 原則,事務(wù)通過(guò) commit, rollback, and crash-recovery 等功能來(lái)保護(hù)用戶數(shù)據(jù)

2.  支持行級(jí)鎖,類似 oracle 方式一致性讀來(lái)提高多用戶并發(fā)和性能

3.  InnoDB 表按照主鍵的順序組織存放在磁盤(pán)上(索引組織表),優(yōu)化基于主鍵的查詢

4.  支持外鍵約束

5.  可以與其他存儲(chǔ)引擎的表混合使用。如 join 查詢等

6.  當(dāng)處理大量數(shù)據(jù)時(shí),innoDB 能高效利用 CPU

 InnoDB 引擎特點(diǎn)

a. 支持地理空間索引 從 MySQL 5.7.5 開(kāi)始

b.Innodb 不支持 hash 索引,但是 innodb 內(nèi)部使用 hash 索引實(shí)現(xiàn)自適應(yīng)哈希功能

c. 支持全文索引 從 MySQL 5.6.4 開(kāi)始

d.Barracuda 文件格式下支持壓縮表

e、f、g. 在 server 層實(shí)現(xiàn) 數(shù)據(jù)加密、主從復(fù)制、備份和 point-in-time 恢復(fù)

InnoDB 在內(nèi)存中使用 buffer pool 來(lái)緩存數(shù)據(jù)和索引。

默認(rèn),innodb_file_per_table 是開(kāi)啟的,每個(gè)表和與其相關(guān)的索引存儲(chǔ)在單獨(dú)的一個(gè)文件中;

當(dāng) innodb_file_per_table 關(guān)閉時(shí),所有 innodb 表和索引都存儲(chǔ)在單個(gè)系統(tǒng)表空間(可能包含幾個(gè)文件或者分區(qū))。

從 MySQL 5.7.6 開(kāi)始,innodb 表可以存儲(chǔ)在普通表空間,多個(gè)表共享一個(gè)表空間存儲(chǔ)數(shù)據(jù)

Innodb 表可以處理大量數(shù)據(jù),即使在文件大小限制為 2GB 的 OS 下

 Innodb 作為默認(rèn)存儲(chǔ)引擎

MySQL 5.7 innodb 是默認(rèn)的存儲(chǔ)引擎。Innodb 在 mysql 中是事務(wù)安全的存儲(chǔ)引擎,通過(guò) commit, rollback, and crash-recovery 功能來(lái)保護(hù)用戶數(shù)據(jù)。Innodb 行級(jí)鎖(沒(méi)有鎖升級(jí)的問(wèn)題),并且類似 oracle 的一致性讀來(lái)提高多用戶并發(fā)性。Innodb 表是索引組織表,以主鍵的順序來(lái)組織存放數(shù)據(jù)從而減少 IO。支持外鍵約束。

 Innodb 表的好處

1.  Crash recovery

2.  Buffer pool 緩沖訪問(wèn)的數(shù)據(jù)和索引,熱點(diǎn)數(shù)據(jù)直接在內(nèi)存中處理,此緩存使用于多種類型的信息,從而加速了處理。

3.  外鍵約束

4.  如果磁盤(pán)或者內(nèi)存中的數(shù)據(jù)損壞了,在使用它之前可以使用 checksum 機(jī)制來(lái)修復(fù)數(shù)據(jù)

5.  索引組織表的特性,通過(guò)主鍵 where ,order by,group by 和 join 查詢是快速的

6.  Change buffering 特性,自動(dòng)優(yōu)化 DML 操作。Innodb 表不僅允許并行的讀寫(xiě),它還緩存修改的數(shù)據(jù)來(lái)減少 IO

7.  自適應(yīng)哈希

8.  壓縮表和與其關(guān)聯(lián)的索引

9.  在線刪除和創(chuàng)建索引

10.  可以快速的 Truncate 一個(gè) file_per_table,并且釋放的空間,操作系統(tǒng)可重用。而不是 file_per_table 關(guān)閉狀態(tài)下,是存放在系統(tǒng)表空間,釋放的空間,僅僅 innodb 可以重用

11.  對(duì)于 BLOB 和 long text 的存儲(chǔ)效率更高,在動(dòng)態(tài)行模式下

12.  可以通過(guò) INFORMATION_SCHEMA 監(jiān)控內(nèi)部工作

13.  可以通過(guò) Performance 下面的表來(lái)查看性能相關(guān)信息

 Innodb 表最佳實(shí)踐

一些使用 innodb 表的建議:

1.  為每張表定義一個(gè)主鍵:使用最常查詢的列(或多列), 若沒(méi)有明顯的主鍵,使用一個(gè)自增長(zhǎng)的值作為主鍵

2.  關(guān)閉 autocommit:對(duì)性能的上限最大每秒提交上百次(由存儲(chǔ)設(shè)備的 IO 性能限制)

3.  使用 START TRANSACTION 和 COMMIT 來(lái)控制事務(wù)提交的粒度

4.  不要使用 LOCK TABLES 語(yǔ)句,innodb 在不犧牲可靠性和高性能的同時(shí)能處理多個(gè)會(huì)話對(duì)同一個(gè)表的讀和寫(xiě)。為了得到一些行獨(dú)占訪問(wèn),可以使用 SELECT … FOR UPDATE 來(lái)鎖定期望的行

5.  開(kāi)啟 innodb_file_per_table 選項(xiàng)將各個(gè)表的數(shù)據(jù)和索引存放在單獨(dú)的文件中,而不是放在一個(gè)巨大的 system 表空間。并且便于一些功能的使用,如:表壓縮、快速 truncate 等。

innodb_file_per_table 從 MySQL 5.6.6 開(kāi)始默認(rèn)是開(kāi)啟的

6.  評(píng)估你的數(shù)據(jù)和訪問(wèn)模式是否適用于 innodb 表壓縮特性(在 create table 語(yǔ)句指定(ROW_FORMAT=COMPRESSED)),表壓縮可以提高 IO 性能

7.  運(yùn)行時(shí)指定 –sql_mode=NO_ENGINE_SUBSTITUTION 選項(xiàng)來(lái)防止需要的存儲(chǔ)引擎被禁用或未編譯,自動(dòng)替換存儲(chǔ)引擎

關(guān)閉 InnoDB 引擎

Oracle 推薦 innoDB 為首選,從 MySQL 5.5 開(kāi)始,其為默認(rèn)存儲(chǔ)引擎。

從 MySQL 5.7.5 開(kāi)始,–skip-innodb (–innodb=OFF, –disable-innodb)選項(xiàng)被棄用,如果使用此選項(xiàng),將會(huì)得到一個(gè)警告。在未來(lái)的 MySQL 版本中此選項(xiàng)將被刪除。

而在 5.7.5 之前,如果你不想使用 innodb 表,則通過(guò)如下步驟來(lái)關(guān)閉:

1.  啟動(dòng)的時(shí)候指定 –innodb=OFF 或者 –skip-innodb 來(lái)關(guān)閉 innodb 引擎

2.  因?yàn)?innodb 是默認(rèn)引擎,所以要想關(guān)閉其,必須使用 –default-storage-engine 和 –default-tmp-storage-engine 來(lái)設(shè)置默認(rèn)的其他引擎來(lái)為永久和臨時(shí)表引擎

3.  為了防止當(dāng)查詢 innodb 相關(guān) information_schema 表時(shí)數(shù)據(jù)庫(kù) crash,需要禁用其相關(guān)表。在 my.cnf 位置文件中 [mysqld] 部分指定如下內(nèi)容:

loose-innodb-trx=0
loose-innodb-locks=0
loose-innodb-lock-waits=0
loose-innodb-cmp=0
loose-innodb-cmp-per-index=0
loose-innodb-cmp-per-index-reset=0
loose-innodb-cmp-reset=0
loose-innodb-cmpmem=0
loose-innodb-cmpmem-reset=0
loose-innodb-buffer-page=0
loose-innodb-buffer-page-lru=0
loose-innodb-buffer-pool-stats=0
loose-innodb-metrics=0
loose-innodb-ft-default-stopword=0
loose-innodb-ft-inserted=0
loose-innodb-ft-deleted=0
loose-innodb-ft-being-deleted=0
loose-innodb-ft-config=0
loose-innodb-ft-index-cache=0
loose-innodb-ft-index-table=0
loose-innodb-sys-tables=0
loose-innodb-sys-tablestats=0
loose-innodb-sys-indexes=0
loose-innodb-sys-columns=0
loose-innodb-sys-fields=0
loose-innodb-sys-foreign=0
loose-innodb-sys-foreign-cols=0

以上是“InnoDB 有什么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-26發(fā)表,共計(jì)3180字。
轉(zhuǎn)載說(shuō)明:除特殊說(shuō)明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論(沒(méi)有評(píng)論)
主站蜘蛛池模板: 阳山县| 措勤县| 石屏县| 黄冈市| 谷城县| 南川市| 宜兰县| 灵川县| 阳朔县| 乐业县| 鄱阳县| 保德县| 海南省| 丘北县| 永清县| 筠连县| 博客| 贺州市| 崇州市| 和平区| 桦甸市| 崇礼县| 怀宁县| 张家港市| 日喀则市| 凤山市| 临西县| 阿拉善右旗| 清镇市| 康马县| 常宁市| 许昌县| 芜湖县| 瓦房店市| 江源县| 江津市| 长春市| 独山县| 峡江县| 禄丰县| 铜山县|