mysql學習9:第四章:資料庫檔案--檔案

studywell發表於2018-11-06

例項啟動後,將自己唯一程式號記錄到自己pid檔案中,儲存在資料目錄下。

注意:在配置檔案my.cnf中必須配置pid-file=/data/mysql/mysql.pid,否則資料庫啟動報錯。

檢視程式,可看到檔案路徑。

[root@localhost mysql]# ps -ef |grep mysql

root      20196      1  0 14:15 pts/1    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/mysql.pid

mysql     21556  20196  0 14:15 pts/1    00:00:06 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/error.log --open-files-limit=65535 --pid-file=/data/mysql/mysql.pid --socket=/tmp/mysql.sock --port=3306

資料庫兩種連結方式,網路連線和本地連線

mysql.sock檔案是伺服器與本地客戶端進行通訊的unix套接字檔案,預設位置/tmp/mysql.sock

mysql8.0之前,以.frm結尾的檔案是表結構檔案,從8.0開始,frm表的定義檔案被消除掉,資料都寫到系統表空間,透過利用InnoDB引擎實現表的DDL語句操作原子性。此前版本無法實現表DDL語句操作的原子性,如truncate無法回滾。

問題:書中說mysql的truncate能回滾?查相關資料,沒說能回滾的。

 

前面測試建立表的,在目錄下可看到該表檔案,

# ls t.*

t.frm  t.ibd

InnoDB儲存引擎層面主要分兩種日誌:redo log 和   undo log

InnoDB多版本透過使用undo和回滾段實現

InnoDB是索引組織表,每行記錄都實現三個隱藏欄位:

n   DB_ROW_ID

n   DB_TRX_ID:代表每行記錄的事務ID

n   DB_ROLL_PTR:代表每行記錄的回滾指標。

InnoDB有一個全域性事務連結串列,每個事務的開始都會把事務ID放到連結串列中,DB_ROLL_PTR指標指向undo記錄,構造多版本。

 

redo log用於記錄事務操作變化,記錄的是資料被修改之後的值。

undo日誌檔案

undo記錄(insert,update,delete),只記錄變更前的舊資料,預設記錄到系統表空間ibdata1,從5.6開始可以使用獨立undo表空間,可以把undo檔案部署到單獨的高速儲存上。

undo log的主要引數

 

[mysql]>show variables like '%undo%';

+--------------------------+------------+

| Variable_name            | Value      |

+--------------------------+------------+

| innodb_max_undo_log_size | 1073741824 |

| innodb_undo_directory    | ./         |

| innodb_undo_log_truncate | OFF        |

| innodb_undo_logs         | 128        |

| innodb_undo_tablespaces  | 0          |

+--------------------------+------------+

 

innodb_undo_directory: undo檔案的儲存目錄;

    innodb_undo_logs :undo回滾段數量預設128個,可將大回滾段拆分成多個小回滾段,每個log segments最多存1024個事務。

innodb_undo_tablespaces 代表undo tablespace的個數,預設0個;表空間有undo log檔案,預設10M。undo tablespace數量最少2個,以備truncate undo tablespace切換。

innodb_max_undo_size ,5.7新增,預設1G,達到閾值觸發truncate undo logs。truncate後的undo logs大小預設恢復為10M。可線上刪除無用undo log,但需開啟innodb_undo_log_truncate,預設關閉。

innodb_pure_rseg_truncate_frequency: 5.7新增,控制回收undo log的頻率,預設128.表示purge undo輪詢128次後,進行一次undo的truncate操作;但undo log空間在回滾段沒有釋放前不會收縮。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29519108/viewspace-2218906/,如需轉載,請註明出處,否則將追究法律責任。

相關文章