在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

MySQL中的InnoDB是什么?

哲想軟件 ? 來源:哲想軟件 ? 2023-04-13 09:09 ? 次閱讀

有許多強大的MySQL存儲引擎可供我們使用,而InnoDB無疑是最受歡迎的存儲引擎之一。它高度可靠和高效,因此它成為5.5版本以后所有MySQL的默認存儲引擎也就不足為奇了。讓我們更仔細地看看它的優點和功能。

MySQL中的InnoDB是什么?

現在我們想確定MySQLInnoDB 存儲引擎的特殊之處。以下是它的主要優點:

InnoDB基于ACID,支持提交和回滾操作。此外,它不太可能崩潰,因此用戶的數據仍然受到保護。

由于行級鎖定,多用戶性能成為可能。

由于InnoDB表有效地組織數據,因此優化了基于主鍵的查詢。每個InnoDB表中都有一個稱為聚集索引的主鍵索引。此索引排列數據以減少主鍵查詢的I/O。

MySQLInnoDB 支持外鍵約束,可以實現和維護數據完整性。

InnoDB也可以與MariaDB服務器一起使用。在這種情況下,InnoDB提供外鍵、XA事務和帶有保存點的事務。

InnoDB集群

每家公司的政策都以提供最安全、最穩定的數據流為前提。但是如何才能實現和保證呢?答案在于MySQLInnoDB Cluster,它為MySQL提供了一個方便的解決方案。在AdminAPI和MySQLShell 的參與下,您可以輕松管理多個MySQL服務器實例以作為單個InnoDB集群中工作。

MySQLInnoDB Cluster 的組件包括以下內容:

MySQL路由器(安全路由到數據庫節點)

MySQL組復制(多個相互復制的數據庫服務器)

MySQLShell(MySQL的配置工具,有助于啟用具有容錯功能的拓撲)

查看它如何在單個InnoDB集群中協同工作:

4ea4781e-d98f-11ed-bfe3-dac502259ad0.png

創建InnoDB表

為了創建InnoDB表,您只需在CREATETABLE 語句中指定ENGINE= InnoDB。例如:

4ebd452e-d98f-11ed-bfe3-dac502259ad0.png

InnoDB服務器變量和性能調優技巧

以下是可用的InnoDB服務器變量列表,這些變量有助于加速和優化MySQL數據庫和InnoDB存儲引擎之間的性能和交互:

innodb_flush_log_at_trx_commit

innodb_buffer_pool_size

innodb_buffer_pool_instances

innodb_file_per_table

innodb_force_recovery

innodb_lock_wait_timeout

innodb_large_prefix

innodb_flush_method

innodb_thread_concurrency

innodb_log_buffer_size

innodb_io_capacity

innodb_strict_mode

innodb_autoinc_lock_mode

innodb_read_io_threads

innodb_data_file_path

innodb_flush_log_at_trx_commit

此命令的基本語法是--innodb-flush-log-at-trx-commit=#.它配置事務刷新到重做日志的頻率。

innodb_buffer_pool_size

此命令的基本語法是--innodb-buffer-pool-size=#.InnoDB 緩沖池是一個內存域,InnoDB存儲引擎在其中緩存其表和索引數據。默認值為134217728字節(128MB)。CPU架構定義了最大值,在32位系統上等于4294967295(232-1),在64位系統上等于18446744073709551615(264-1)。

innodb_buffer_pool_instances

此命令的基本語法是--innodb-buffer-pool-instances=#.它表示InnoDB緩沖池必須包含的區域數量。對于數GB范圍內的緩沖池,將整個緩沖池劃分為多個單獨的實例可以提高并發性。

innodb_file_per_table

此命令的基本語法是--innodb-file-per-table[={OFF|ON}].啟用該變量后,默認情況下會在每個表的文件表空間中生成表。如果禁用,則在系統表空間中生成表。

innodb_force_recovery

此命令的基本語法是--innodb-force-recovery=#.它是一種崩潰恢復模式,通常用于解決問題。允許的值范圍為0到6。

innodb_lock_wait_timeout

此命令的基本語法是--innodb-lock-wait-timeout=#.默認持續時間為50秒。之后,InnoDB事務被中斷。如果超過時間限制,會報如下錯誤:

4ed7985c-d98f-11ed-bfe3-dac502259ad0.png

在這種情況下,僅回滾語句。如果要回滾整個事務,請使用–innodb-rollback-on-timeout命令。

innodb_large_prefix

此命令的基本語法是--innodb-large-prefix[={OFF|ON}].如果啟用此選項,則對于行格式為DYNAMIC或COMPRESSED的InnoDB表,允許使用超過767字節(最多3072字節)的索引鍵前綴。對于行格式為REDUNDANT或COMPACT的表,此命令不會影響允許的索引鍵前綴長度。

innodb_flush_method

使用--innodb-flush-method=value該命令指定將用于將數據刷新到InnoDB文件的方法。請注意,I/O吞吐量可能會受到影響。

innodb_thread_concurrency

此命令的基本語法是--innodb-thread-concurrency=#.它定義了InnoDB允許的最大線程數。無限并發由值0定義,默認設置。

innodb_log_buffer_size

此命令的基本語法是--innodb-log-buffer-size=#.這是尚未提交的事務的緩沖區大小。如果您使用大字段(如BLOB或TEXT),則應更改此參數的值。

innodb_io_capacity

此命令的基本語法是--innodb-io-capacity=#.它指定了InnoDB后臺操作可訪問的每秒I/O事務數(IOPS)。

innodb_strict_mode

此命令的基本語法是--innodb-strict-mode[={OFF|ON}].嚴格模式起到了屏蔽不同SQL語句序列和操作模式的各種意外結果的作用。當啟用innodb_strict_mode時,InnoDB會針對特定條件發出錯誤。

innodb_autoinc_lock_mode

此命令的基本語法是--innodb-autoinc-lock-mode=#.自動遞增值在鎖定模式下生成。允許的值為0、1或2(分別用于傳統、連續或交錯鎖定模式)。默認設置為1(連續)。

innodb_read_io_threads

使用--innodb-read-io-threads=#該命令定義InnoDB文件I/O流的數量。

innodb_data_file_path

此命令的基本語法是–innodb-data-file-path=file_name.它指定有關InnoDB系統表空間數據文件的信息。如果尚未定義innodb_data_file_path的值,則默認生成單個自動擴展數據文件。該數據文件名為ibdata1,大小約為12MB。

數據文件的完整語法如下:

file_name:file_size[:autoextend[max_file_size]]

它由文件名、文件大小、自動擴展屬性和最大屬性組成。

請注意:在執行您的操作時,確保InnoDB沒有使用它自己的內存而不是操作系統的內存是很重要的。在這種情況下,您將看到InnoDB內存堆被禁用的通知,并會顯示錯誤。可以通過將innodb_use_sys_malloc的值設置為ON或1而不是0來解決。

處理InnoDB中最常見的錯誤

InnoDB中錯誤的處理并不總是與指定的SQL標準相同。例如,SQL語句中的錯誤必須導致所述語句的回滾。對于InnoDB,在某些情況下,失敗的語句會被回滾;在其他情況下,整個事務會回滾。

表空間空間不足會導致Tableis full錯誤,并且SQL語句會回滾。

除非在所述語句中指定了IGNORE選項,否則重復鍵錯誤會導致語句回滾。

鎖等待超時導致正在等待鎖但面臨超時的語句回滾。

rowtoo long該錯誤還會回滾相應的語句。

事務死鎖會導致整個事務回滾,之后應重試。

其他錯誤一般由MySQL代碼層檢測到,從而導致相關語句回滾。

使用InnoDB和dbForgeStudio for MySQL 獲得最高性能

現在我們想推薦一個IDE,它將促進您使用MySQL數據庫和InnoDB引擎– dbForgeStudio for MySQL的工作。雖然它與所有流行的 MySQL數據庫引擎完全兼容,但InnoDB是值得特別提及的一個。

首先,dbForgeStudio 支持InnoDB提供的每一個優勢,包括我們文章開頭提到的那些。此外,您還可以獲得許多優秀的功能,這些功能將加速和簡化您的日常工作(例如自動提交操作)。還值得注意的是,dbForgeStudio 在創建表時默認使用InnoDB。

其次,您可以通過到Database菜單-> ServerVariables找到上述服務器變量,如下面的屏幕截圖所示。

4ee743c4-d98f-11ed-bfe3-dac502259ad0.png

打開類別:InnoDB,您將找到所有這些。

4f267332-d98f-11ed-bfe3-dac502259ad0.png

最后,dbForgeStudio 支持XtraDB,它是InnoDB的向后兼容分支,由Percona為MariaDB和PerconaServer 數據庫開發。





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 路由器
    +關注

    關注

    22

    文章

    3789

    瀏覽量

    115473
  • MySQL
    +關注

    關注

    1

    文章

    840

    瀏覽量

    27292
  • MYSQL數據庫
    +關注

    關注

    0

    文章

    96

    瀏覽量

    9664

原文標題:MySQL中的InnoDB是什么?包含示例和性能調優技巧的教程

文章出處:【微信號:哲想軟件,微信公眾號:哲想軟件】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    深度剖析MySQL/InnoDB的并發控制和加鎖技術

    本文主要是針對MySQL/InnoDB的并發控制和加鎖技術做一個比較深入的剖析,并且對其中涉及到的重要的概念,如多版本并發控制(MVCC),臟讀(dirty read),幻讀(phantom
    的頭像 發表于 10-29 14:36 ?2268次閱讀
    深度剖析<b class='flag-5'>MySQL</b>/<b class='flag-5'>InnoDB</b>的并發控制和加鎖技術

    全球唯一:MySQL社區2018年度公司貢獻獎頒給阿里云

    。6. 自增列值持久化MySQL AUTO_INCREMENT 字段實現了自增 ID 的生成,但只保存在內存,意外宕機或重啟,就會丟失自增值,AliSQL 使用表 SEGMENT HEADER
    發表于 04-25 11:51

    詳解Mysql數據庫InnoDB存儲引擎事務

    關于Mysql數據庫InnoDB存儲引擎事務的一點理解
    發表于 05-13 10:11

    InnoDB鎖的特點和狀態查詢

    MySQL探秘(五)InnoDB鎖的類型和狀態查詢
    發表于 08-07 11:45

    分布式MySQLInnoDB cluster

    分布式MySQL——InnoDB cluster和性能測試
    發表于 04-15 08:43

    MySQL存儲引擎簡析

    MySQL存儲引擎InnoDB??InnoDB 的存儲文件有兩個,后綴名分別是.frm和.idb,其中.frm是表的定義文件,而.idb是數據文件。InnoDB
    發表于 09-06 06:07

    最有用的mysql問答

    想進大廠,mysql不會那可不行,來接受mysql面試挑戰吧,看看你能堅持到哪里? 1. 能說下myisam 和 innodb的區別嗎? myisam引擎是5.1版本之前的默認引擎,支持全文檢索
    的頭像 發表于 09-30 17:43 ?1801次閱讀
    最有用的<b class='flag-5'>mysql</b>問答

    MySQL的高級內容詳解

    之前兩篇文章帶你了解了 MySQL 的基礎語法和 MySQL 的進階內容,那么這篇文章我們來了解一下 MySQL 的高級內容。 其他文章: 138 張圖帶你
    的頭像 發表于 03-11 16:55 ?2347次閱讀
    <b class='flag-5'>MySQL</b><b class='flag-5'>中</b>的高級內容詳解

    關于InnoDB的內存結構及原理詳解

    除此之外還聊了一下MySQLInnoDB的日志,和兩次寫,總的來說算是一個入門級別的介紹,這篇文章就來詳細介紹一下InnoDB的內存結構。
    的頭像 發表于 04-16 16:15 ?2909次閱讀
    關于<b class='flag-5'>InnoDB</b>的內存結構及原理詳解

    MySQL的redo log是什么

    時,InnoDB存儲引擎會使用redo log恢復數據,保證數據的持久性與完整性。 上一篇阿星講過,MySQL數據是以頁為單位,你查詢一條
    的頭像 發表于 09-14 09:40 ?2164次閱讀

    innodb究竟是如何存數據的

    前言如果你使用過mysql數據庫,對它的存儲引擎:innodb,一定不會感到陌生。 眾所周知,在mysql5以前,默認的存儲引擎是:myslam。但mysql5之后,默認的存儲引擎已經
    的頭像 發表于 10-09 15:41 ?1473次閱讀
    <b class='flag-5'>innodb</b>究竟是如何存數據的

    MySQL的頁結構及原理

    索引可以說是每個工程師的必備技能點,明白索引的原理對于寫出高質量的 SQL 至關重要,今天我們就從 0 到 1 來理解下索引的原理,相信大家看完不光對索引還會對 MySQL InnoDB 存儲引擎的最小存儲單位「頁」會有更深
    的頭像 發表于 11-05 12:56 ?1249次閱讀

    MySQL5.6 InnoDB支持全文檢索

    在早期的 MySQL InnoDB 并不支持全文檢索技術,從 MySQL 5.6 開始,InnoDB 開始支持全文檢索。
    的頭像 發表于 11-12 15:14 ?1581次閱讀

    剖析MySQL InnoDB存儲原理(上)

    一、MySQL記錄的存儲結構: 1、Page的結構,如下圖:
    的頭像 發表于 02-15 15:45 ?538次閱讀
    剖析<b class='flag-5'>MySQL</b> <b class='flag-5'>InnoDB</b>存儲原理(上)

    剖析MySQL InnoDB存儲原理(下)

    一、InnoDB存儲引擎內存管理 1.1 概念: Buffer Pool:預分配的內存池; Page:Buffer Pool的最小單位; Free list:空閑Page組成的鏈表;
    的頭像 發表于 02-15 15:47 ?532次閱讀
    剖析<b class='flag-5'>MySQL</b> <b class='flag-5'>InnoDB</b>存儲原理(下)
    主站蜘蛛池模板: 欧美不卡在线视频 | 日韩高清性爽一级毛片免费 | 狼人综合色 | 菲菲国产在线观看 | 91成人免费 | 免费日韩网站 | 性喷潮久久久久久久久 | 亚洲免费视频观看 | 午夜视频在线观看一区二区 | 一级特级毛片免费 | 五月婷亚洲 | aaa亚洲| 夜夜夜操操操 | 欧美性猛交xxxx黑人猛交 | 色视频免费版高清在线观看 | 黄色片视频网 | www.日本黄色 | 亚洲色吧 | 狠狠色丁香久久婷婷综合丁香 | 亚洲一区二区在线免费观看 | 丁香视频在线观看播放 | 婷婷综合激情网 | 综合五月天堂 | 国产男女交性视频播放免费bd | 自拍偷拍综合网 | 国产精品欧美激情第一页 | 男人的午夜影院 | 国模精品| 国产伦精品一区二区三区 | 中国胖女人一级毛片aaaaa | 午夜精品久久久久久久 | 亚洲第一福利网站 | aaa一区二区三区 | 狠狠插狠狠操 | 国产大片黄在线观看 | 综合色爱| 色多多影视 | 91欧美精品激情在线观看 | 爽天天天天天天天 | 久久精品国产四虎 | 五月婷婷在线播放 |