Innodb引擎筆記

2021-10-01 23:25:10 字數 2468 閱讀 2967

原書:《mysql技術內幕:innodb引擎》

原始碼:

檢視mysql使用配置:mysql --help | grep cnf 以最後乙個為準

檢視mysql資料檔案目錄: show variables like '%datadir%'; //也可以檢視*.cnf中的datadir欄位的值

檢視狀態:show session/global status like '%uptime%';

檢視表狀態:show table status; // 包含row_format;

<=> select * from information_schema.tables;

// <=> select  * from global_variables where variable_name like '%dir%';

// select @@session.autocommit ;

// 修改變數 set [ global | session ] autocommit = true; 

// 修改變數 set @@global.autocommit = true; 

檢視log路徑:show variables like '%log_err%';

檢視base路徑:show variables like '%dir%'; --datadir/basedir

檢視binlog: mysqlbinlog /usr/local/var/mysql/binlog.000001

檢視innodb狀態(包括innodb執行緒數等): show engine innodb status;

binlog有三種:statment/row/mixed

innodb儲存檔案:.ibd

myisam儲存檔案 .myi, .myd

redo log: ib_logfile0 ib_logfile1

表空間資料檔案 /usr/local/var/mysql/ibdata1 存放了各個表的資訊。如果啟用了innodb_file_per_table將會為每個表生成乙個表空間。但是每個表空間裡只儲存了索引、資料和插入緩衝,但是撤銷、系統事務、二次寫緩衝還是存在共享的表空間。

表資料檔案: ***.ibd 存放了資料,key等資訊

show engines; <=> select * from information_schema.engines;檢視mysql支援的引擎資訊

delimiter |

create procedure recreate(num int) begin declare idx int default 1; truncate table inc; while idx <= num do insert into inc values(idx, now()); set idx = idx + 1; end while; end;|

delimiter ;

約束:

select * from information_schema.table_constraints;

select * from information_schema.referential_constraints;

分割槽:alter table p partition by hash(k) partitions 4;

鎖:select 也可以加鎖: 

select * from t where k < 3 for update; --對k小於3的行加上排它鎖;

select * from t where k < 3 lock in share mode; --對k<3的行加上共享鎖;

select * from information_schema.innodb_locks; --檢視正在使用的鎖;

事務:select * from information_schema.innodb_trx; --正在執行的事務

**解析:

1. innodb每個頁有16k(0x4000)(可以使用show variables like 'innodb_page_size' ;檢視),每個頁型別定義參見: .頁的結構如下:

mysql沒有定義頁這個結構,是直接通過offset覆蓋bytes,一些建立的函式:

page_create()

mach_write_to_2()

file header offset: 

page header offset: 

InnoDB 儲存引擎

innodb是事務型資料庫的首選引擎,支援事務安全表 acid 支援行鎖定和外來鍵。mysql 5.5.5 之後,innodb作為預設儲存引擎。innodb的主要特性有一下幾項。a.innodb給mysql提供了具有提交 回滾和崩潰恢復能力的事務安全 acid相容 儲存引擎。innodb鎖定在行級並...

InnoDB 儲存引擎

設計上採用了類似於oracle資料庫的架構 接下來 詳細介紹 innodb 儲存引擎的 體系架構 及其不同於其他儲存引擎的特性 一 概述 innodb 儲存引擎 是第乙個完整支援acid事物的 mysql 儲存引擎 特點 1 行鎖設計 2 支援mvcc 3 提供一致性非鎖定讀 4 最有效地利用 以及...

InnoDB儲存引擎

內外存交換的基本單位 mysql將資料從外存讀入記憶體不是以記錄為單位,這樣消耗太大,是以頁為單位,每個頁裡填充記錄。每頁大小為16kb。記錄堆 行記錄儲存區,分為有效記錄和已刪除記錄兩種 自由空間鍊錶 已刪除記錄組成的鍊錶 未分配空間 頁尾 儲存頁面校驗資訊 頁內的資料是按照主鍵的順序有序儲存的。...