更新時間:2022-08-05 09:46:06 來源:動力節點 瀏覽1790次
InnoDB是MySQL存儲引擎之一,現在我們想確定 MySQL InnoDB 存儲引擎的特別之處。以下是它的主要優點:
InnoDB 基于 ACID 并支持提交和回滾操作。此外,它不太可能崩潰,因此用戶的數據仍然受到保護。
由于行級鎖定,多用戶性能成為可能。
由于 InnoDB 表有效地組織數據,因此優化了基于主鍵的查詢。每個 InnoDB 表中都有一個稱為聚集索引的主鍵索引。該索引排列數據以減少主鍵查詢的 I/O。
MySQL InnoDB 支持外鍵約束,這允許實現和維護數據完整性。
InnoDB 也可以與 MariaDB 服務器一起使用。在這種情況下,InnoDB 提供外鍵、XA 事務和帶有保存點的事務。
每家公司的政策都以提供最安全、最穩定的數據流為前提。但是如何實現和保證呢?答案在于 MySQL InnoDB Cluster,它為 MySQL 提供了一個方便的解決方案。通過 AdminAPI 和 MySQL Shell 的參與,您可以輕松管理多個 MySQL 服務器實例以作為單個 InnoDB Cluster 工作。
MySQL InnoDB Cluster 的組件包括:
MySQL 路由器(安全路由到數據庫節點)
MySQL 組復制(相互復制的多個數據庫服務器)
MySQL Shell(MySQL 的配置工具,有助于啟用具有容錯能力的拓撲)
看看這一切如何在單個 InnoDB 集群中協同工作:
為了創建 InnoDB 表,您只需在 CREATE TABLE 語句中指定。例如:ENGINE = InnoDB
創建表Emp ( EmpID SMALLINT UNSIGNED NOT NULL , YearBorn YEAR NOT NULL , CityBorn VARCHAR ( 40 ) NOT NULL DEFAULT 'Unknown' ) ENGINE = 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 中的錯誤處理并不總是與指定的 SQL 標準相同。例如,SQL 語句中的錯誤必須導致該語句的回滾。至于 InnoDB,在某些情況下,失敗的語句會回滾;在其他情況下,整個事務都會回滾。
表空間空間不足會導致錯誤,并且 SQL 語句會回滾。Table is full
除非在所述語句中指定了 IGNORE 選項,否則重復鍵錯誤會導致語句回滾。
鎖定等待超時會導致正在等待鎖定但面臨超時的語句回滾。
該錯誤還會回滾相應的語句。row too long
事務死鎖會導致整個事務回滾,之后應該重試。
其他錯誤一般會被 MySQL 代碼層檢測到,從而導致相關語句的回滾。
以上就是關于“MySQL InnoDB存儲引擎詳解”,大家如果對此比較感興趣,想了解更多相關知識,不妨來關注一下動力節點的MySQL教程,里面的課程內容由淺到深,細致全面,很適合沒有基礎的小白學習,希望對大家能夠有幫助。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習