MYSQL海量数据存储与优化

mysql的体系架构

主存的高可用架构可以自己搭建一下

开缓存 不一定就能提高效率

存储引擎

作用:读取内存内容

系统文件:db innodb

文件和日志:事务 借助哪个 日志文件 redo 还是 undo

为什么系统数据库崩溃了,还能恢复数据

Query and Slow 慢查询

第四节MySql运行机制

mysql的通讯机制:

全双工:

单双工

  1. 查询缓存:开不开具体看情况,如果有查询到相同的sql语句,就直接返回回去,反之。
  • 即使开启缓存,一下sql也不能缓存
  • 查询语句使用
  1. 解析器:检查当前语句是否合法
  2. 查询优化器:根据解析树生成最优的执行计划 ,有许多优化机制:不一一举例了。
  • show profiles – 查询一条sql语句的耗时情况
  • in的优化:会先进行排序,在采用二分法查找数据

第五节MySql的存储引擎

面试题:innodb和myisam的区别?

1.事务和外键
2.锁机制
3.索引结构
4.并发处理能力
5.存储文件

默认使用的是innoDB 5.5版本之后 之前使用的是 myisam

位于第三层,负责mysql中的数据的存储和提取,可插拔式的储存引擎

  • innoDB:支持事务,具有提交,回滚和崩溃恢复能力,提供行锁,事务安全

  • myisAM:不支持事务和外键,访问速度快 ,查询不加锁

javaSE:

jvm GC hashMap 设计模式 多线程(线程池)juc 类/方法/调用/参数的传递/结果的接收

hashmap:1.7/1.8区别? 红黑树? 数组长度是2的n次min 整理一下hashmap的面试题(拓展开来)

innoDB:减少 存储引擎 和 磁盘 之间的 io次数 因为他有缓存机制 changebuffer :当更新一条记录时,如果该记录在bufferpool里面,就直接进行操作。当下次查询时,会先进行磁盘读取,然后再从changebuffer中读取信息合并,最终载入bufferpool中 提高dml操作效率

自适应哈希索引(apdapter hash index):将经常需要查询的数据(热点数据) 再建立一个哈希索引 时间复杂度就是 o(1)

bufferpool:缓存表里的数据到内存当中,先从内存中取

logbuffer:

redolog:重做日志 用于在崩溃恢复期间更正不完整事务写入的数据,因为在sql操作之前,先进行日志操作。

undolog:撤销日志 在事务开始之气保存被修改的数据的备份

第六节索引类型

索引:类似于一本书的目录,提升查询这本书中的章节的效率

​ 索引会占据单独的书页:每个章节和页码(位置)建立了对应关系,存储到目录所在的书页中。

数据库中的索引:一种提高我们查询数据的效率的数据结构,

​ 本质是一个文件,文件中使用指定的数据结构(b+)对我们的索引列进行存储,单独开辟一块空间。

数据结构:提升查询效率 存储列的信息

100条数据:

id= 55;

mysql优化:索引

innoDB存储引擎:数据+索引在一起的,在同一个文件中

索引可以提升查询速度,会影响where查询以及order by排序

缺点:

  1. 占据专门的磁盘

  2. 索引需要维护,不适合频繁更新的列上创建索引

  3. 数据量比较小的表,不建议创建索引

涉及到索引迁移的话会把索引删除,提升迁移速度

  • 索引存储结构:
  • 应用层次划分:

1.1普通索引

这是最基本的索引类型,基于普通的字段建立的索引,没有任何限制。

1.2唯一索引

unique

1.3主键索引

primary key

1.4复合索引

constraint pk_id_name primary key(id,name);

如果当前已经在一个表上建立了索引

最左匹配原则:

1.5全文索引:不如ES

对某列中的数据建立全文索引:某列中存储了大量的数据,模糊查询的方式去查询某列中是否包含指定的关键字。

第七节索引原理

二分法查找法:

hash结构:

2.4 聚簇索引和辅助索引

专有的sql优化的场景

1.查询慢查询地址,定位时间较长的sql

2.使用explain查询,查询 给分析一下整体的耗时

3.索引 上面的内容

innodb查询效率高的????

数据结构 : b+树

算法:二分法查找 自适应哈希索引 ---- 查询效率比较高

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值