MySQL(二)

谈一下对MySQL索引的理解?

存储引擎

创建方式:
create table emp(id int) engine=innodb/myisam;
show engine;
define:数据在磁盘上的不同组织形式。

数据在磁盘上的不同组织形式。

innodb :'.idb'       支持事务、外键、表锁和行锁    
myisam :'myd''myi' 不支持事务、外键;只支持表锁
存储方式不同。
innodb默认读取16kb的数据,在插入数据的时候,必须将数据跟某一列索引例绑定到一起。
**索引的是数据结构都是B+树**

Hash表也可以作为索引的数据结构,必须是memory存储引擎;
memory存储在内存中,断电之后会数据丢失。
innodb存储引擎支持自适应hash,用户不可以干扰;

一个表中包含多个索引列,那么数据文件会存储几份?
保存一份

数据结构

B+树:

Hash表:数组+链表
1.使用hash表必须要保证具备好的hash算法,如果算法不合适会造成hash冲突或是hash碰撞,会导致数据散列不均匀,可能会退化成一个链表。
2.使用hash不能进行范围查询;
3.需要大量的内存空间。
二叉树、AVL、红黑树为什么不能作为索引结构?
1.都是树;
2.分支有且仅有两个;

局部性原理:时间局部性和空间局部性
磁盘预读:
尽可能多的减少要去局的数据量,通过减少数据访问的次数

索引的分类

聚簇索引和非聚簇索引
数据跟索引放在一起的叫聚簇索引
数据跟索引不放在一起的叫非聚簇索引

索引涉及到常问的几个名词

回表:从某一索引叶子节点中获取聚簇索引的id值,根据id再去聚簇索引中获取全量记录;
     尽量减少回表查询
索引覆盖:从索引的叶子结点中获取全量查询列的过程叫索引覆盖。
最左匹配(组合索引):MySQL优化器会进行优化,选择合适的顺序来执行;
      从组合索引的左边向右边匹配。
      例如:组合索引(name,age):先匹配name在匹配age
      select * from student where age=22;  #无法匹配成功

**索引下推:**(这边没太听懂,希望有大佬给讲解一下)
SQL谓词下推

SQL优化

(1)SQL语句的优化;
(2)索引的优化;
(3)表结构的优化;
(4)事务的处理;一系列操作语句
(5)锁表的问题;
(6)系统配置的优化;
(7)硬件、服务器的优化。
当表中全部字段多是索引列时,无论进行什么样的查询都会用到索引。
索引不是越多越好,也不需要在全部列上添加索引

分库分表常用技术:mycat,shardingsphere(推荐),drds.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值