《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