原書:《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。記錄堆 行記錄儲存區,分為有效記錄和已刪除記錄兩種 自由空間鍊錶 已刪除記錄組成的鍊錶 未分配空間 頁尾 儲存頁面校驗資訊 頁內的資料是按照主鍵的順序有序儲存的。...