随笔分类 -  MySQL

MySQL相关
摘要:delete对性能会有影响,一般不建议硬性delete数据,而是标记deleted = 1这种软删除 为啥呢? 根据之前了解的mysql底层存储原理 链接: mysql底层存储及IO过程理解 最小存储单元page页,无论是非叶子节点page存的是索引key和指针,还是叶子节点存的是行数据 1.当删除 阅读全文
posted @ 2021-02-05 20:41 六小扛把子 阅读(1081) 评论(0) 推荐(0)
摘要:1.explain 主要看的几点: type 查询级别 possible_keys 可能用到的索引 key 实际用到的索引 rows 大致扫描行数 extra 其中这个扫描行数只是一个近似行数,并不是实际绝对的扫描行数 MySQL中数据的单位都是页,MySQL又采用了采样统计的方法,采样统计的时候, 阅读全文
posted @ 2021-02-03 15:04 六小扛把子 阅读(163) 评论(0) 推荐(0)
摘要:InnoDB维护了一个逻辑空间叫表空间 向上对接开发者,向下对接物理文件 当创建表时,会自动为表创建一个对应表名的表空间,并在数据库目录下生成一个“表名.ibd”的表空间文件。 存储结构 物理存储图 page页 extent区 sagement段 书页,一本书,一套书的关系 最小存储单元是页 , 一 阅读全文
posted @ 2021-01-31 20:58 六小扛把子 阅读(1119) 评论(0) 推荐(0)
摘要:mysql的隔离级别? 读未提交 -》 读提交 -》 可重复读 -》 串行化 InnoDB默认级别为可重复读,可重复读会产生问题 就是幻读。 什么是幻读? 不可重复读侧重于update这种操作,同一条数据前后读起来不一样的情况, 幻读侧重于insert delete这种操作,前后两次select 数 阅读全文
posted @ 2021-01-28 12:20 六小扛把子 阅读(6753) 评论(1) 推荐(3)
摘要:redo log 是InnoDB存储引擎层的日志,其他存储引擎不存在的 bin log是服务层的日志,不区分存储引擎 redo log 是物理日志,记录的是"在 XXX 页上做了 XXX 修改"; binlog 是逻辑日志,比如" 给 id = 2 这一行的 c 字段加 1" redo log 是有 阅读全文
posted @ 2020-11-21 11:05 六小扛把子 阅读(675) 评论(0) 推荐(0)
摘要:index-merge 导致线上死锁问题 问题造成条件: 两个事务分别执行两次update操作 每个用到了两个及以上索引 由于两边索引顺序不一致导致 造成原因: InnoDB使用索引来实现行级别的锁, 事务A 通过index1 对某个字段加了锁 事务B 通过index2 对另一个字段加了锁 两个事务 阅读全文
posted @ 2020-09-21 15:49 六小扛把子 阅读(322) 评论(0) 推荐(0)
摘要:MYSQL数据库: 插件式的存储引擎架构,将查询处理及其他的系统任务,以及数据的存储提取相分离。可根据也无需求选择相应的存储引擎。 InnoDB引擎: innodb主键是聚簇索引,采用b+树结构,非叶节点存的是主键和指向子节点的指针,叶子节点存的就是整体行数据,整体都是有序的,通过主键扫描根据树查找 阅读全文
posted @ 2020-03-22 15:20 六小扛把子 阅读(560) 评论(0) 推荐(1)