Mariadb存储引擎:
Mariadb中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。
显式请求对表添加读锁(共享锁)
MariaDB [hellodb]> LOCK TABLES students READ;
撤销对表的锁定
MariaDB [hellodb]> UNLOCK TABLES;
显式请求对表添加写锁(独占锁)
MariaDB [hellodb]> LOCK TABLES students WRITE;
事务
启动事务
MariaDB [hellodb]> START TRANSACTION;
回滚事务
MariaDB [hellodb]> ROLLBACK;
提交事务
MariaDB [hellodb]> COMMIT;
对事务做保存点savepoint,可以回滚到指定的保存点
MariaDB [hellodb]> START TRANSACTION; MariaDB [hellodb]> DELETE FROM students WHERE StuID=1; MariaDB [hellodb]> SAVEPOINT SP1; MariaDB [hellodb]> INSERT INTO students(Name,Age,Gender) VALUES (‘test‘,19,‘M‘); MariaDB [hellodb]> SAVEPOINT SP2; MariaDB [hellodb]> ROLLBACK TO SP2; #回滚到保存点 MariaDB [hellodb]> RELEASE SAVEPOINT SP1; #删除保存点
事务隔离级别:
READ UNCOMMITTED (读未提交,能读别人还没有提交的数据),存在脏读,不可重复读,幻读问题
READ COMMITTED (读提交,只有别人提交的数据才能读取,未提交的数据是看不到的),存在不可重复读,幻读问题
REPEATABLE READ (可重读,可以多次读取,多次读取的数据不会改变,一边修改不会影响另一边数据,只有另一边也提交了才会更改),存在幻读问题
SERIALIZABILE (可串行化,一个会话的操作会阻塞另一个会话),存在加锁读问题
可能存在问题:
脏读,读别人还没有提交的数据;
不可重复读,两次读取的数据不一致;
幻读,当对方不提交时数据一致,当对方提交后数据不一致,导致不知道那个数据为真实数据;
加锁读;
MariaDB [hellodb]> SHOW GLOBAL VARIABLES LIKE ‘tx_isolation‘; MariaDB [(none)]> SET tx_isolation=‘READ-UNCOMMITTED‘; #默认级别为REPEATABLE-READ
本文出自 “马尔高” 博客,请务必保留此出处http://kgdbfmwfn.blog.51cto.com/5062471/1708678
原文:http://kgdbfmwfn.blog.51cto.com/5062471/1708678