建立索引幫助
help CREATE INDEXcss
建立索引html
CREATE UNIQUE INDEX
,惟一鍵命名時最好加上前綴以區分例如uni_idx刪除索引mysql
查看索引web
優化表空間:
數據庫中表數據文件,在刪除數據後,所佔空間不會自動釋放,須要進行表空間優化才能夠釋放sql
查看索引的使用shell
EXPLAIN分析索引的有效性數據庫
profiling
,默認是關閉的保證多個用戶同時訪問,互相不干擾vim
鎖分類centos
實現緩存
鎖策略
在鎖粒度及數據安全性尋求的平衡機制,加鎖的缺點爲影響併發性,可是能夠保證數據完整性,在二者之間尋求平衡
WRITE
鎖時,須要注意緩存是否開啓,若是有緩存須要重啓服務或者關閉緩存開關或者將緩存相關的服務器變量quer_cache_wlock_invalidate=on
寫入配置文件,不容許其餘用戶從緩存讀取事務Transactions:一組原子性的SQL語句,或一個獨立工做單元,有專門的事務日誌記錄操做過程,實現undo,redo等故障恢復功能,來保證數據的一致性
ACID特性:
Transaction生命週期
使用事務
在數據庫中執行增刪改就是一個事務,回車執行就結束了此事務,這種系統後臺自動開始,自動提交的事務叫作隱式提交事務,mysql和sql server默認使用自動提交,oracle默認使用的是手動提交須要輸入(commit提交,rollback回滾)
自動提交是否啓動相關變量
set autocommit={1|0} 默認爲1,設爲0時爲非自動提交
人爲定義啓動事務(如下3個命令均可以)
結束事務:
事務保存點
事務隔離級別
事務隔離級別 | 髒讀可能性 | 不可重複讀可能性 | 幻讀可能性 | 加鎖讀 |
---|---|---|---|---|
讀未提交(read-uncommitted) | 是 | 是 | 是 | 否 |
不可重複讀(read-committed) | 否 | 是 | 是 | 否 |
可重複讀(repeatable-read) | 否 | 否 | 是 | 否 |
串行化(serializable) | 否 | 否 | 否 | 是 |
各級別說明,從上至下更加嚴格
innodb_lock_wait_timeout
wait_timeout
指定事務隔離級別:
服務器變量tx_isolation指定,默認爲REPEATABLE-READ,可在GLOBAL和SESSION級進行設置
沒有特殊需求,勁量少的啓用非默認設置,多少都會拖慢速度
保存事務在執行中的操做,事務型存儲引擎自行管理和使用
特徵
事務日誌文件
Innodb事務日誌相關配置:
主從複製架構中,從服務器用於保存從主服務器的二進制日誌中讀取的事件
general_log=ON|OFF
general_log_file=HOSTNAME.log
log_output=TABLE|FILE|NONE
slow_query_log=ON|OFF
long_query_time=N
slow_query_log_file=HOSTNAME-slow.log
log_queries_not_using_indexes=ON
log_slow_rate_limit = 1
log_slow_queries = OFF
功能
記錄致使數據改變或潛在致使數據改變的SQL語句,經過「重放」日誌文件中的事件來生成數據副本,也就是將二進制文件中的SQL語句從新執行一次,未來能夠用二進制日誌來實現主從複製
-特徵
優化建議
建議二進制日誌和數據文件分開存放,不至於一塊兒丟失,有還原機會
二進制日誌記錄格式
UPDATE students SET age=10;
沒有限定條件,實際修改的是所有記錄好比25條,記錄模式爲語句記錄,將只記錄此條SQL語句查看默認二進制記錄格式
show variables like 'binlog_format';
二進制日誌文件的構成
二進制日誌相關的服務器變量:
sql_log_bin=ON|OFF
log_bin=/PATH/BIN_LOG_FILE
binlog_format=STATEMENT|ROW|MIXED
max_binlog_size=1073741824
sync_binlog=1|0
expire_logs_days=N
二進制日誌管理
SHOW {BINARY | MASTER} LOGS
SHOW MASTER STATUS
查看二進制文件中的指定內容
二進制日誌事件的格式:
清除指定二進制日誌:
PURGE { BINARY | MASTER } LOGS { TO 'log_name' | BEFORE datetime_expr }
刪除全部二進制日誌,index文件從新記數
日誌文件從#開始記數,默認從1開始,通常是master第一次啓動時執行,MariaDB10.1.6開始支持TO #
RESET MASTER [TO #]
切換日誌文件,生成的日誌和原日誌文件都是有效的
FLUSH LOGS
命令格式
mysqlbinlog [OPTIONS] log_file…
OPTIONS
示例
利用二進制文件恢復數據
</div> <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-7f770a53f2.css" rel="stylesheet"> </div>