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.cnblogs.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、付费专栏及课程。

余额充值