已解决:我怎么知道哪些数据库支持事务呢?
已解决:我update一个语句,如果错了,怎样回滚呢?
已解决:如何查看auto commit是否开启了?
问题:数据库的事务隔离与锁机制有什么差别和联系,最近在看,感觉两个很混乱~求解释。?
问题:什么叫做脏读,不可重复读,幻影读?
1.我怎么知道哪些数据库支持事务呢?
最简单的方式是show engines 然后挑选具有 transaction的引擎
但是很可惜show engines 不能加上过滤条件,其实show engines的数据,从information_schema得出
我们可以直接查询这个information_schema用户关于引擎表的表
接着查询表结构,目的是为了看看这个表都有哪些字段了
发现只有innodb引擎是支持事务功能的,难怪有一本书专门写innodb引擎啦,现在mysql也把innodb作为默认引擎
2.我update一个语句,如果错了,怎样回滚呢?
不一定要在存储过程里面做,直接在命令台上操作就可以了,两种方式
第一种,start transaciton; 配合 commit 使用
第二种,set autocommit=0 一头一尾 set autocommit=1 配合 commit 使用
我在第一个客户(session)删除了表
在第二个客户(session)已经打不开了,因为事务对DDL语句无效,一旦你执行DDL语句或者锁,事务就被commit了
所以事务这个机制,主要是针对数据的,也就是开发人员使用的DML语句
这是DML语句,所以第二个客户(session)不能查看到任何信息
4.如何查看auto commit是否开启了
show variables 真是一个万能句子
3.数据库的事务隔离与锁机制有什么差别和联系,最近在看,感觉两个很混乱~求解释。?
锁机制分为2中
1.外部锁定,指的是锁住物理层的那些表文件,很不靠谱,#内幕 作者都不建议使用
2.内部锁定,锁住表或者行