1. 程式人生 > >《MySQL技術內幕:InnoDB儲存引擎》一文中示例總結

《MySQL技術內幕:InnoDB儲存引擎》一文中示例總結

第1章 MySQL體系結構和儲存引擎

啟動

./mysqld_safe &

檢視程序

ps -ef|grep mysqld

資料庫例項啟動時,讀取配置檔案的順序,後面的檔案配置會覆蓋前面的檔案配置

mysql --help | grep my.cnf

mysql> show variables like 'datadir';//datadir引數指定資料庫所在路徑

儲存引擎

mysql> show engines;//檢視當前MySQL資料庫支援的儲存引擎

mysql> create table xxx engine=myisam;//建立表時可以指定儲存引擎

mysql> alter table xxx engine=innodb;//可以修改表的儲存引擎

連線MySQL

連線MySQL的常用方式:

  • TCP/IP方式:mysql -hxxx.xxx.xxx.xxx -uxxx -p

許可權檢視

mysql> use mysql;

mysql> select host,user,password from user;

  • 命名管道和共享記憶體方式:略
  • Unix域套接字方式:

mysql> show variables like 'socket';//查詢套接字檔案的路徑

套接字連線

mysql -uroot -S /var/lib/mysql/mysql.sock -p

第2章 InnoDB儲存引擎

mysql> show engine innodb status;//檢視innodb儲存引擎狀態

mysql> show variables like 'innodb_version';//檢視innodb儲存引擎版本

mysql> show variables like 'innodb_%io_threads';//檢視innodb儲存引擎io_thread引數

innodb儲存引擎記憶體由緩衝池(buffer pool)、重做日誌緩衝池(redo log buffer)和額外記憶體池(additional memory pool)組成

mysql> show variables like 'innodb_buffer_pool_size';

mysql> show variables like 'innodb_log_buffer_size';

mysql> show variables like 'innodb_additional_mem_pool_size';

關鍵特性

  • 插入緩衝

使用前提:非聚集且不唯一的索引

  • 兩次寫

mysql> show variables like 'innodb_doublewrite';

mysql> show global status like 'innodb_dblwr%';//檢視執行情況

  • 自適應雜湊索引

mysql> show variables like 'innodb_adaptive_hash_index';

innodb_fast_shutdown

innodb_force_recovery

第3章 檔案

引數檔案

mysql --help | grep my.cnf

mysql> show variables;//檢視引數

mysql> set read_buffer_size = 524288;//設定會話動態引數

mysql> set @@global.read_buffer_size = 524288;//設定全域性動態引數

日誌檔案

  • 錯誤日誌,記錄MySQL的啟動、執行、關閉過程

mysql> show variables like 'log_error';//路徑

  • 慢查詢日誌,可用於SQL語句優化

設定時間閾值:long_query_time

開關:slow_query_log

檔案路徑:slow_query_log_file

記錄沒有使用索引的SQL語句:log_queries_not_using_indexes

慢查詢輸出的格式:file/table

log_output 

  • 查詢日誌,記錄了所有對資料庫請求的資訊,不論這些資訊是否得到了正確的執行

general_log

general_log_file

  • 二進位制日誌,記錄了對資料庫執行更改的所有操作

開關:log_bin

log_bin_basename

log_bin_index

單個二進位制日誌檔案的最大值:max_binlog_size

binlog_cache_size

mysql> show global status like 'binlog_cache_use';

mysql> show global status like 'binlog_cache_disk_use';

sync_binlog

log_slave_updates//master->slave->slave

binlog_format

mysql> show master status;//二進位制日誌大小

mysqlbinlog mysql-bin.000001//檢視binlog

mysqlbinlog -vv mysql-bin.000001//檢視row型別的binlog

套接字檔案

mysql> show variables like "socket";

pid檔案

mysql> show variables like "pid_file";

表結構定義檔案

.frm

儲存引擎檔案

  • 表空間檔案

mysql> show variables like "innodb_data_file_path";

mysql> show variables like "innodb_file_per_table";//.ibd

  • 重做日誌檔案

mysql> show variables like "datadir";//檔案路徑

mysql> show create table xxxx;//顯示創表語句

mysql> show table status like "t1";//檢視當前表狀態

//linux下開啟ibd檔案 hexdump -C -v mytest.ibd > mytest.txt