主存的高可用架构可以自己搭建一下
开缓存 不一定就能提高效率
作用:读取内存内容
系统文件:db innodb
文件和日志:事务 借助哪个 日志文件 redo 还是 undo
为什么系统数据库崩溃了,还能恢复数据
Query and Slow 慢查询
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排序。
缺点:
占据专门的磁盘
索引需要维护,不适合频繁更新的列上创建索引
数据量比较小的表,不建议创建索引
涉及到索引迁移的话会把索引删除,提升迁移速度
这是最基本的索引类型,基于普通的字段建立的索引,没有任何限制。
unique
primary key
constraint pk_id_name primary key(id,name);
如果当前已经在一个表上建立了索引
最左匹配原则:
对某列中的数据建立全文索引:某列中存储了大量的数据,模糊查询的方式去查询某列中是否包含指定的关键字。
二分法查找法:
hash结构:
专有的sql优化的场景
1.查询慢查询地址,定位时间较长的sql
2.使用explain查询,查询 给分析一下整体的耗时
3.索引 上面的内容
innodb查询效率高的????
数据结构 : b+树
算法:二分法查找 自适应哈希索引 ---- 查询效率比较高