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彻底删除日志(删除之前的日志,从新生成)

猜你喜欢

转载自blog.csdn.net/qq_35242906/article/details/81194055
今日推荐