MariaDB用法——事務、日誌
事務
A:原子性
C:一致性
I:隔離性
D:永續性
預設隱式事務,建議開啟顯式事務
開啟顯示事務(臨時)
start transaction(開啟一個臨時事物)
配置檔案寫入autocommit=0(永久開啟事務)
驗證
重新登入一個終端看不到
commit:提交,提交後不能撤回
預設為REPEATABLE-READ型別:commit後其他終端依舊看不到,commit或rollback本身的事務才可以看到,這就是傳說中的幻讀
沒有提交的資料又被稱為“髒資料”;未被處理的資料
rollback:撤回,後悔藥
savepoint 名稱;:髒資料索引,表示可以撤回到指定位置,相當去快照
建立兩個還原點
恢復到a26,表示恢復到定義a26當時的狀態,所有沒有改變
恢復到c28,在定義c28之前添加了一條記錄,定義之後刪除了stuid為26的記錄。所以會恢復到“快照”當時的樣子
release savepoint 儲存點:刪除“快照”
事務隔離級別
READ-UNCOMMITTED:其他終端可以讀到髒資料
READ-COMMITTED:只能讀到提交資料,多次提交會導致讀取資料不一致
REPEATABLE-READ:在一個事務中檢視的資料是一致的,但會出現幻讀
SERIALIZABLE:未提交的讀操作會阻塞修改事務
MVCC:多版本併發控制
在配置檔案中更改
檢視事務隔離級別
select @@tx_isolation;
加配置檔案
set tx_isolation="READ-UNCOMMITTED"
併發控制
死鎖
兩個事務同時更改一個表時,系統會自動犧牲一個事務,犧牲修改時間短的。
show processlist;檢視都有誰登入了,在幹什麼
kill 使用者ID; :終止該使用者的當前事務
日誌
cat .mysql_history:檢視mysql操作歷史
事務日誌
redo log
undo log
show variables like '%innodb_log%';通常會增加日誌檔案個數和檔案大小
存放路徑
依照慣例,寫入配置檔案(最後在安裝完資料庫後就更改,否則因為已經有資料會報錯,該配置檔案"_"和"-"不區分,日誌最好不要和軟體存到同一路徑下)
錯誤日誌
通用日誌:記錄所有人對資料庫的動作
show variables like 'general_log%';
set global general_log=on;只會在排錯的時候開啟,對系統資源消耗太大
檢視通用日誌報錯型別
更改報錯型別
set global log_output=TABLE|FILE|NONE
更改後通用日誌會儲存到mysql庫的general_log表中(會影響資料庫效能所以不推薦使用)
concat:連線函式
optimize table 表名:優化表
慢查詢日誌
slow_query_log=ON|OFF 開啟或關閉慢查詢
set global slow_query_log=on
long_query_time=N 多長時間算慢,預設十秒
select sleep(1),name from 表名:沒查詢一條記錄停頓一秒
二進位制日誌
show profiles;
show profiles for query ID編號 ;
sql_log_bin:預設開啟的
log_bin:手動指定最好指定單獨路徑log_bin=PATH/logname
set global log_queries_not_using_indexes=on;開啟記錄不用索引或使用全索引查詢的命令到慢日誌中
二進位制日誌
基於行記錄二進位制日誌
關閉二進位制日誌set sql_log_bin=off;
show master logs;檢視二進位制日誌檔案大小
show master status;檢視二進位制日誌的“位置”
寫完資料後日志增加
expire_logs_days=N:二進位制檔案可以自動刪除多少天一起的,預設為0
show binlog events in '檔名' from 位置;
mysqlbinlog 日誌檔案
mysqlbinlog --start-position=位置 --stop-position=位置 日誌檔案 (-v詳情,選項載入檔案之前)
purge master logs to '日誌檔名':清除日誌(刪除該日誌檔案之前的)
reset master徹底刪除日誌(刪除之前的日誌,從新生成)