mysql事务隔离级别和索引_MySQL-索引类型,引擎类型,事务隔离级别:

MySQL索引类型主要有以下几种。

1. B-Tree索引

最常见的索引类型,基于B-Tree数据结构。B-Tree的基本思想是,

所有值(被索引的列)都是排过序的,每个叶节点到跟节点距离相等。

所以B-Tree适合用来查找某一范围内的数据,而且可以直接支持数据排序(ORDER BY)。

但是当索引多列时,列的顺序特别重要,需要格外注意。

InnoDB和MyISAM都支持B-Tree索引。

InnoDB用的是一个变种B+Tree,而MyISAM为了节省空间对索引进行了压缩,从而牺牲了性能。

2. Hash索引

基于hash表。所以这种索引只支持精确查找,不支持范围查找,不支持排序。

这意味着范围查找或ORDER BY都要依赖server层的额外工作。

目前只有Memory引擎支持显式的hash索引(但是它的hash是nonunique的,

冲突太多时也会影响查找性能)。Memory引擎默认的索引类型即是Hash索引,虽然它也支持B-Tree索引。

例子:

CREATE TABLE testhash (

fname VARCHAR(50) NOT NULL,

lname VARCHAR(50) NOT NULL,

KEY USING HASH(fname)

) ENGINE =MEMORY;

3. Spatial (R-Tree)(空间)索引

只有MyISAM引擎支持,并且支持的不好。可以忽略。

4. Full-text索引

主要用来查找文本中的关键字,而不是直接与索引中的值相比较。

Full-text索引跟其它索引大不相同,它更像是一个搜索引擎,

而不是简单的WHERE语句的参数匹配。你可以对某列分别进行full-text索引和B-Tree索引,

两者互不冲突。Full-text索引配合MATCH AGAINST操作使用,而不是一般的WHERE语句加LIKE。

mysql常用的两种引擎:

MyISAM:支持:    full-text索引,保存表行数(select count(*) from tanble 不用全表扫面)

不支持:事务,外键,行级锁

InnoDB: 支持:    事务,外键,行级锁(默认)

不支持:full-text索引,不保存表行数

事务并发问题:

原文: 花弄影 的 MySQL的四种事务隔离级别 :https://www..com/huanongying/p/7021555.htm

1、脏读:

事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据

2、不可重复读:

事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,

导致事务A多次读取同一数据时,结果 不一致。

3、幻读:

系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,

但是系统管理员B就在这个时候插入了一条具体分数的记录,

当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值