mysql存儲引擎

MyISAM存儲引擎

優勢:mysql

  1. 最大支持256TB存儲空間
  2. 讀取數據較快,佔用資源較少

MyISAM引擎存儲文件:sql

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

缺點:數據庫

  1. 不支持事務
  2. 最小粒度鎖:表級
  3. 讀寫相互阻塞,寫入不能讀,讀時不能寫
  4. 不支持MVCC(支持多版本併發控制機制)
  5. 不支持聚簇索引
  6. 不支持數據緩存
  7. 不支持外鍵
  8. 崩潰恢復性較差

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

InnoDB存儲引擎

特色:服務器

  1. 64TB
  2. 支持事務
  3. 行級鎖
  4. 支持多版本併發控制機制(MVCC)
  5. 支持聚簇索引
  6. 支持數據緩存
  7. 支持外鍵

InnoDB數據庫文件:併發

  • tb_name.frm:表格式定義
  • tb_name.ibd :數據文件
    注意:默認全部的innodb表數據文件存儲在數據庫目錄下的ibddata1, ibddata2, ... ,這樣極其不方便管理
    
    啓用 innodb_file_per_table=ON,每一個表單獨使用一個表空間存儲表的數據和索引

啓用:innodb_file_per_tablespa

編輯/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    |
+-----------------------+-------+

一、管理存儲引擎

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

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

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

設置默認的存儲引擎:blog

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

二、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

相關文章
相關標籤/搜索