数据库mysql

如何优化数据库

1.优化sql语句,优化索引,优化慢查询语句

2.按照范式设计数据库

3.通过redis缓存来缓解数据库压力 请提前将热点数据查出来放到缓存中

4.适当的分库分表,使磁盘的读写效率更高

5.主从方式 ,读写分离。

如何优化sql语句

需要大写列就使用那些列 尽量选用较小的列

select经常使用的字段创建索引

select不要用*

避免在索引列进行操作

一行数据使用limit 1

保证数据不超过200w数据 适当分表

避免改变索引类型

ACID是靠什么保证的

A:原子性。靠日志的回滚来保证,要么都成功,要的都失败回滚

C:一致性,靠原子性,隔离,持久,这三个性质来保证

I:隔离性,事物之间不会相互打扰,由mvcc来保证

D:持久性 也是由日志保证 保证数据能够永久保存成功

mysql的隔离界别

读未提交:a事务读到了 b事务还未提交的数据 脏读,幻读,不可重复读

读已提交:读到了其他事务已经提交的数据 不可重复读,幻读

可重复读:保证同一事物的多次操作读到的数据是一样的 幻读

串行化:一个一个执行,效率低

聚簇索引和非聚簇索引

聚簇索引是索引和数据存在一起,找到索引就找到了数据(innodb)

非聚簇索引索引和数据是分开存的(myisam)

索引的类型

普通索引:最基本的索引,可重复,可空

唯一索引:与普通索引相似,索引列的值必须唯一,可空

主键索引:特殊的唯一索引,一个表只有一个主键,不可空

组合索引:在多个字段上建立索引(越少越好),查询条件使用了第一个索引时才会被使用,遵循最左前缀原则

全文索引:查找全文中的关键字 类似搜索引擎

最左前缀原则

先看第一列,满足条件再看下一列

例如abc 先根据a排序,再根据b排序,再是c排序

索引的存储结构

b+树(innodb) 有序

hash索引(mamery) 将键值转换为哈希值 直接定位 范围查询存在问题

索引失效的情况
  1. like以%开头
  2. or的前后没有同时都使用索引 失效
  3. 组合索引没使用第一个索引列 失效
  4. 数据出现了隐式转换 失效 varchar不加‘ ’转换为int
  5. 索引列进行了操作 计算 not in 《 》
索引的缺点
  1. 占用磁盘空间
  2. 修改数据的时候 索引也要跟着维护
分库分表的方式

垂直分表:访问多,大字段进行分表

垂直分库:按表耦合度进行分库

水平分表:按数据行分

水平分库:每个库只有表的不问数据 提升效率

  1. 尽量不要切分
  2. 数据量过大,影响访问 进行切分
  3. 数据量快速增长
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

隋zy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值