日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

存储引擎:MySQL系列之七

發布時間:2025/4/14 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 存储引擎:MySQL系列之七 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、MyISAM存儲引擎

缺點:

  • 不支持事務
  • 最小粒度鎖:表級
  • 讀寫相互阻塞,寫入不能讀,讀時不能寫
  • 不支持MVCC(支持多版本并發控制機制)
  • 不支持聚簇索引
  • 不支持數據緩存
  • 不支持外鍵
  • 崩潰恢復性較差
  • 優點:

  • 最大支持256TB存儲空間
  • 讀取數據較快,占用資源較少
  • MyISAM引擎存儲文件:

    • tbl_name.frm: 表格式定義
    • tbl_name.MYD: 數據文件
    • tbl_name.MYI: 索引文件

    適用場景:MySQL5.5.5前默認的數據庫引擎,在只讀(或者寫較少)、表較小(可以接受長時間進行修復操作)的場景適用

    二:InnoDB存儲引擎

    特點:

  • 64TB
  • 支持事務
  • 行級鎖
  • 支持多版本并發控制機制(MVCC)
  • 支持聚簇索引
  • 支持數據緩存
  • 支持外鍵
  • InnoDB數據庫文件:

    • tb_name.frm:表格式定義
    • tb_name.ibd :數據文件

    注意:默認所有的innodb表數據文件存儲在數據庫目錄下的ibddata1, ibddata2, ... ,這樣極其不方便管理

    強烈建議:啟用 innodb_file_per_table=ON,每個表單獨使用一個表空間存儲表的數據和索引

    啟用:innodb_file_per_table

    編輯/etc/my.cnf在[mysqld]下添加 innodb_file_per_table 重啟服務器 # service mysqld restart MariaDB [(none)]> SHOW VARIABLES LIKE 'innodb_file_per_table'; +-----------------------+-------+ | Variable_name | Value | +-----------------------+-------+ | innodb_file_per_table | ON | +-----------------------+-------+

    1、管理存儲引擎

    查看mysql支持的存儲引擎: MariaDB [(none)]> SHOW ENGINES\G

    查看當前默認的存儲引擎:

    MariaDB [(none)]> SHOW VARIABLES LIKE 'storage_engine'; +----------------+--------+ | Variable_name | Value | +----------------+--------+ | storage_engine | InnoDB | +----------------+--------+

    設置默認的存儲引擎:

    編輯/etc/my.conf在[mysqld]下添加 default_storage_engine = InnoDB

    2、InnoDB存儲引擎的緩存

    InnoDB存儲引擎的緩沖池通常緩沖池的命中不應該小于99%

    相關狀態變量:

    MariaDB [(none)]> SHOW GLOBAL STATUS LIKE 'innodb%read%'\G
    • Innodb_buffer_pool_reads: 表示從物理磁盤讀取頁的次數
    • Innodb_buffer_pool_read_ahead: 預讀的次數
    • Innodb_buffer_pool_read_ahead_evicted: 預讀頁,但是沒有讀取就從緩沖池中被替換的頁數量,一般用來判斷預讀的效率
    • Innodb_buffer_pool_read_requests: 從緩沖池中讀取頁次數
    • Innodb_data_read: 總共讀入的字節數
    • Innodb_data_reads: 發起讀取請求的次數,每次讀取可能需要讀取多個頁

    Innodb緩沖池命中率 = Innodb_buffer_pool_read_requests / ( Innodb_buffer_pool_read_requests + Innodb_buffer_pool_read_ahead + Innodb_buffer_pool_reads )

    平均每次讀取的字節數 = Innodb_data_read / Innodb_data_reads

    三、其他存儲引擎

    • Performance_Schema:Performance_Schema數據庫;
    • Memory :將所有數據存儲在RAM中,以便在需要快速查找參考和其他類似數據的環境中進行快速訪問。適用存放臨時數據。引擎以前被稱為HEAP引擎;
    • MRG_MyISAM:使MySQL DBA或開發人員能夠對一系列相同的MyISAM表進行邏輯分組,并將它們作為一個對象引用。適用于VLDB(Very Large Data Base)環境,如數據倉庫;
    • Archive :為存儲和檢索大量很少參考的存檔或安全審核信息,只支持SELECT和INSERT操作;支持行級鎖和專用緩存區;
    • Federated聯合:用于訪問其它遠程MySQL服務器一個代理,它通過創建一個到遠程MySQL服務器的客戶端連接,并將查詢傳輸到遠程服務器執行,而后完成數據存取,提供鏈接單獨MySQL服務器的能力,以便從多個物理服務器創建一個邏輯數據庫。非常適合分布式或數據集市環境;
    • BDB:可替代InnoDB的事務引擎,支持COMMIT、ROLLBACK和其他事務特性;
    • Cluster/NDB:MySQL的簇式數據庫引擎,尤其適合于具有高性能查找要求的應用程序,這類查找需求還要求具有最高的正常工作時間和可用性;
    • CSV:CSV存儲引擎使用逗號分隔值格式將數據存儲在文本文件中。可以使用CSV引擎以CSV格式導入和導出其他軟件和應用程序之間的數據交換;
    • BLACKHOLE :黑洞存儲引擎接受但不存儲數據,檢索總是返回一個空集。該功能可用于分布式數據庫設計,數據自動復制,但不是本地存儲;
    • example:“stub”引擎,它什么都不做。可以使用此引擎創建表,但不能將數據存儲在其中或從中檢索。目的是作為例子來說明如何開始編寫新的存儲引擎。

    轉載于:https://www.cnblogs.com/L-dongf/p/9160665.html

    總結

    以上是生活随笔為你收集整理的存储引擎:MySQL系列之七的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。