数据库进阶MYSQL分层及其优化

1.mysql分层

  1. 连接层:提供与客户端连接的服务
  2. 服务层:1.提供各种用户使用接口,2提供sql优化器(写的语句和执行可能不一致)
  3. 引擎层:提供了各种存储数据的方式
    1. InnoDB :事物优先,(适合高并发操作 使用行锁)
    2. MyISAM:性能优先(表锁)
  4. 存储层:存储数据
    查询数据库支持哪些引擎:show engines;

2.SQL优化简述

2.1原因:性能低、执行时间长,等待时间长,sql语句欠佳(连接查询),索引失效、服务器参数设置不合理(缓冲、线程数)
2.2sql优化:主要就是优化索引

  • 索引相当于书的目录
  • index是帮助mysql高效获取数据的数据结构。索引是数据结构(树:b树、二叉树。。)
  • 索引的弊端:
    1. 索引本身很大,可以放到内存/硬盘中
    2. 索引不是所有的情况都适用:a.少量数据 b.频繁的更新的字段 c.很少使用的字段
    3. 索引会降低增删改的效率(因为更改以后还需要去更改索引)
  • 优势
    1. 提高查询效率(降低了io的使用率)
    2. 降低cpu的使用率(因为已经做好了排序等)

3.索引

3.1分类

单值索引:单列,一个表可以有多个单值索引
唯一索引:不能重复 id(和主键索引的区别 主键不能为null)
复合索引:多个列构成的索引(相当于 一级目录二级目录。。。)

3.2创建索引

方式一:

create 索引类型 索引名 on 表名(字段)
例:
单值:create index name_index on user(name);
唯一索引:create unique index id_index on user(id)
复合索引:create index name_id_index on user(name,id)

方式二:

**alter table 表名 add 索引类型 索引名(字段) **
例:
单值:alter table user add index name_index(name);
唯一索引:alter table user add unique index id_index(id)
复合索引:alter table user add index name_id_index(name,id)

3.3删除索引

drop index 索引名 on 表名

3.4查询索引

show index from 表名;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值