随笔分类 - mysql
发表于 2020-08-08 20:14阅读:742评论:0推荐:0
摘要:1.什么情况不适合创建索引? 列的离散程度不高:即使创建了索引,也不会走索引,因为需要额外的回表操作,它的cost可能会比全表扫表更高。 不经常查询的字段:创建索引会占用额外的存储开销、性能开销。 频繁更新的字段:频繁更新会导致频繁页分裂,需要迁移数据,会降低性能。 字段数据占用空间过大:会导致索引
阅读全文 »
发表于 2020-08-08 19:30阅读:558评论:0推荐:0
摘要:MySQL 一条查询SQL语句的执行过程? 建立连接 查询缓存:开启查询缓存功能会按照sql报文作为key,查询缓存。 解析器:生成词法语法解析树。 预处理器:语义的校验,例如表名,字段名是否正确。 查询优化器:生成多套执行计划,并计划cost,花费最小的为最终的查询计划。 执行器:执行查询计划,会
阅读全文 »
发表于 2020-08-08 18:50阅读:4735评论:2推荐:0
摘要:1.建议使用有序的自增ID作为主键 MySQL InnoDB 引擎底层数据结构是 B+ 树,所谓的索引其实就是一颗 B+ 树,一个表有多少个索引就会有多少颗 B+ 树,mysql 中的数据都是按顺序保存在 B+ 树叶子节点上的(所以说索引本身是有序的)。 主要目的有三个: 提高范围查询效率; 增加排
阅读全文 »
发表于 2019-10-14 12:50阅读:468评论:0推荐:0
摘要:适用场景:并发量大、数据量大的互联网业务;可以先阅读 "必须掌握的MySQL优化指南" 一、基础规范 (1)必须使用InnoDB存储引擎 解读:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高 (2)必须使用UTF8字符集 UTF 8MB4 解读:万国码,无需转码,无乱码风险
阅读全文 »
发表于 2019-08-30 00:13阅读:1081评论:0推荐:1
摘要:1、replace into 批量更新 示例: 2、insert into on duplicate key update批量更新 表中需要存在唯一索引 示例: replace into 和 insert into on duplicate key update的不同在于: replace into
阅读全文 »
发表于 2019-07-15 16:09阅读:156评论:0推荐:0
摘要:参考资料 1. 官方文档: "https://shardingsphere.apache.org/document/legacy/3.x/document/cn/overview/" 2. 源码分析: "https://www.codercto.com/a/33213.html" 3. Spring
阅读全文 »
发表于 2019-02-26 17:50阅读:15611评论:4推荐:1
摘要:不要盲目的说float和double精度可能发生丢失,而是说在存取时因为精度不一致会发生丢失,当然这里的丢失指的是扩展或者截断了,丢失了原有的精度。decimal是好,但不是说不会发生任何精度丢失。如果问题看得不深入,总会以偏概全。 我们知道,mysql存储小数可以使用float、double、de
阅读全文 »