上一页 1 ··· 21 22 23 24 25 26 27 28 29 ··· 39 下一页
摘要: 并发的问题就可能出现死锁,在MySQL中同样也有死锁的问题。一般MySQL通过回滚能解决不少死锁的问题,但是死锁是无法完全避免的,可以通过一些方法来尽量减少死锁: 第一, 以固定的顺序访问表和行。比如对两个job批量进行更新,可以对id列表先排序,后执行,这样就避免了交叉等待锁的情形;将两个事务的S 阅读全文
posted @ 2021-02-03 20:18 Eleanor123 阅读(58) 评论(0) 推荐(1) 编辑
摘要: 当用范围条件检索数据而不是相等条件检索数据,并请求共享或排他锁是,InnoDB会给符合范围条件的已有数据记录的索引项加锁;对于键值在条件范围内但不存在的记录,叫做间隙。InnoDB也会对这个间隙进行加锁,这种锁机制就是间隙锁。 间隙锁只会在Repeatable read隔离级别下使用,例如test表 阅读全文
posted @ 2021-02-03 20:15 Eleanor123 阅读(137) 评论(0) 推荐(1) 编辑
摘要: 乐观锁是一种思想,具体实现是表中有一个版本字段,第一次读的时候获取到这个字段。处理完业务逻辑开始更新的时候,需要再次查看该字段的值是否和第一次一样。如果一样更新,反之不更新。为什么叫乐观,原因是这个模式没有从数据库加锁,等到更新的时候再判断是否可以更新。 悲观锁是数据库成名加锁,都会阻塞去等待锁。 阅读全文
posted @ 2021-02-03 20:14 Eleanor123 阅读(69) 评论(0) 推荐(1) 编辑
摘要: 数据库事务有不同的隔离级别,不同的隔离级别对锁的使用是不同的,锁的应用最终导致不同事务的隔离级别。MVCC(Multi-Version Concurrency Control)多版本并发控制,MVCC就是行级锁的一个升级。 事务的隔离级别是通过锁的机制来实现的,只不过隐藏了加锁细节。 表锁中读写是阻 阅读全文
posted @ 2021-02-03 20:11 Eleanor123 阅读(467) 评论(0) 推荐(1) 编辑
摘要: MySQL一般使用的是InnoDB存储引擎。InnoDB和MyISAM有两个本质区别:InnoDB支持行锁、事务。表锁是默认的,即使InnoDB不走索引,加的表锁是自动挡。InnoDB比较重要的一个特性就是支持行锁。InnoDB提供了两种类型的行锁: 共享锁(S锁):允许一个事务去读一行,阻止其他事 阅读全文
posted @ 2021-02-03 20:10 Eleanor123 阅读(422) 评论(0) 推荐(0) 编辑
摘要: 锁分为表锁和行锁: 表锁开销小,加锁快;不会出现死锁;锁定力度大,发生锁冲突概率高,并发度低。 行锁开销大,加锁慢;会出现死锁;锁定粒度小,发生锁冲突的概率低,并发度高。 不同的存储引擎支持的锁粒度不一样。InnoDB行锁和表锁都支持,MyISAM只支持表锁。InnoDB只有通过索引条件检索数据才使 阅读全文
posted @ 2021-02-03 20:08 Eleanor123 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 访问权限控制称为封装,它是面向对象三大特征中的一种,访问控制权限最核心的是:只对需要的类可见。Java中的访问控制权限有四种:public、protected、default、private,特点如下: private default protected public 同一类 Yes Yes Yes 阅读全文
posted @ 2021-02-02 22:40 Eleanor123 阅读(202) 评论(0) 推荐(1) 编辑
摘要: 创建一个好的索引,需要考虑以下方面: 最左匹配原则。这个非常重要,MySQL会一直向右匹配直到遇到范围查询(<、>、between、Like)就停止匹配。 尽量选择区分度高的列作为索引。区分度的公式是COUNT(DISTINCT col)、COUNT(*)。表示字段不重复的比例,比率越大扫描的记录数 阅读全文
posted @ 2021-02-02 10:32 Eleanor123 阅读(518) 评论(0) 推荐(1) 编辑
摘要: 不需要考虑=、in的顺序,MySQL会自动优化这些条件的顺序,以匹配尽可能多的索引列。例如索引{a,b,c,d},查询条件c>3 and b =2 and a=1 and d<4与a=1 and c>3 and b=2 and d<4等顺序都是可以的,MySQL会自动优化成a=1 and b=2 a 阅读全文
posted @ 2021-02-02 10:31 Eleanor123 阅读(91) 评论(0) 推荐(1) 编辑
摘要: 索引可以简单的一个列如{a},也可以多个复杂的列组合形成{a,b,c,d}即联合索引。如果是联合索引的话,那么key也可以由多个列组成,同时索引只能用于查找key是否存在(相等),遇到范围查询(<、>、between、like左匹配)等就不能进一步匹配,后退为线性查找。列的排列顺序决定了可命中索引的 阅读全文
posted @ 2021-02-02 10:29 Eleanor123 阅读(718) 评论(0) 推荐(0) 编辑
上一页 1 ··· 21 22 23 24 25 26 27 28 29 ··· 39 下一页