1. 程式人生 > >MariaDB用法——事務、日誌

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徹底刪除日誌(刪除之前的日誌,從新生成)