
数据库
ThunderWay
北京工业大学计算机研究生就读
展开
-
表级锁和行级锁的对比
MyISAM采用表级锁,InnoDB支持行级锁和表级锁,一般默认是行级锁。表级锁:MySQL中锁定粒度最大的一种锁,对当前操作的整张表加锁,实现简单,资源消耗也少,加锁快,不会出现死锁。但是锁定粒度大,触发锁冲突的概率最高,并发度低。行级锁:MySQL中锁定粒度最小的一种锁,只针对当前操作的行进行加锁。行级锁能大大减少数据库操作的冲突。加锁的开销也大,加锁慢,会出现死锁。加锁粒度最小,并发度高。...原创 2020-10-17 10:27:13 · 1615 阅读 · 0 评论 -
事务隔离级别有哪些?MySQL的默认隔离级别是?
SQL标准定义了四个隔离级别:READ-UNCOMMITTED(读未提交):最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读。READ-COMMITTED(读已提交):允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读和不可重复读仍有可能发生。REPEATABLE-READ(可重复读):对同一字段的多次读取结果都是一致的,除非数据是被本身事务所修改,可以阻止脏读和不可重复读,但是幻读仍有可能发生。SERIALIZABLE(可串行化):最高的隔离级别,完全服从A原创 2020-10-15 16:58:13 · 469 阅读 · 0 评论 -
并发事务带来哪些问题?
多个事务并发运行,经常会通过操作相同的数据来完成各自的任务(多个用户对同一数据进行操作),并发虽然是必须的,但是会导致以下的问题。1. 脏读:当一个事务正在访问数据并且对数据进行了修改,而这种修改还没有提交到数据库中,这时另一个事务也访问了这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另一个事务读到的这个数据是“脏数据”,依据“脏数据”做的操作是不正确的。2. 不可重复读:指在一个事务内多次读同一数据。在这个事务还没有结束的时,另一个事务也访问该数据。那么,在第一个事务中的两次读原创 2020-10-13 22:42:55 · 3302 阅读 · 0 评论 -
事务的四个特性
ACID1. 原子性:事务是最小的执行单位,不可分割,事务的原子性确保动作要么全部完成,要么完全不起作用。2. 一致性:事务执行前后,数据保持一致,多个事务对同一个数据读取的结果是相同的。3. 隔离性:并发访问数据库时,一个用户的事务不被其他事务干扰,各并发事务之间数据库相互独立的。4. 持久性:一个事务被提交后,它对数据库中数据的改变是持久的。...原创 2020-10-13 20:46:35 · 298 阅读 · 0 评论 -
什么是事务
事务是逻辑上的一种操作,要么都执行,要么都不执行。举个例子就是:A给B转账1000块,A余额减少1000,B账户增加1000,如果银行系统崩溃,A减少了但是B没有增加,这就不对了,事务保证这两个操作要么同时成功,要么同时失败。...原创 2020-10-13 20:35:48 · 147 阅读 · 0 评论 -
MyISAM和InnoDB的区别
5.5版本以前,MyISAM是MySQL的默认数据库引擎,虽然性能极佳,而且提供了大量的特性,但是MyISAM不支持事务和行级锁,最大的缺陷是崩溃后无法安全恢复;5.5版本以后,MySQL引入了InnoDB(事务性数据库引擎),而且默认存储引擎为InnoDB。大多数情况下我们使用的是InnoDB,但是某些情况下使用MyISAM也是比较合适的,比如读密集的情况下。两者对比:1. 是否支持行级锁:MyISAM只有表级锁,而InnoDB支持行级锁和表级锁,默认为行级锁。2. 是否支持事务和崩溃后的安全原创 2020-10-13 20:24:04 · 136 阅读 · 0 评论