![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
《高性能MySQL》
#_
这个作者很懒,什么都没留下…
展开
-
1.Mysql架构
1.Mysql的逻辑架构图 查询缓存的失效非常频繁,只要有对一个表的更新,这个表上所有的查询缓存都会被清空。所以Mysql8.0已删除。 2.两个重要的日志模块 更详细介绍:https://blog.csdn.net/wanbin6470398/article/details/81941586 ...原创 2019-03-05 11:23:25 · 94 阅读 · 0 评论 -
17.分库分表(三)-分布式主键snowflake
分布式主键 默认分布式主键生成器 ShardingSphere提供灵活的配置分布式主键生成策略方式。 在分片规则配置模块可配置每个表的主键生成策略,默认使用雪花算法(snowflake)生成64bit的长整型数据。 雪花算法是由Twitter公布的分布式主键生成算法,它能够保证不同进程主键的不重复性,以及相同进程主键的有序性。 在同一个进程中,它首先是通过时间位保证不重复,如果时间相同则是...转载 2019-07-28 20:55:07 · 392 阅读 · 0 评论 -
16.(补充)查询性能优化-分解关联查询
原创 2019-03-29 15:50:09 · 1037 阅读 · 0 评论 -
12.优化服务器设置(二)-Redo Log、并发配置、BLOG和TEXT、排序优化
1.Redo Log 2.表空间 3.双写缓冲 https://blog.csdn.net/zhaotiemaomao/article/details/51645991?utm_source=blogxgwz0 4.并发配置 5.优化BLOG和TEXT 解决方法 6.排序优化 ...原创 2019-03-13 14:58:55 · 219 阅读 · 0 评论 -
14.分库分表(二)-Sharding-JDBC对分布式事务的支持
1.本地事务(弱事务): 功能 完全支持非跨库事务,例如:仅分表,或分库但是路由的结果在单库中。 完全支持因逻辑异常导致的跨库事务。例如:同一事务中,跨两个库更新。更新完毕后,抛出空指针,则两个库的内容都能回滚。 不支持因网络、硬件异常导致的跨库事务。例如:同一事务中,跨两个库更新,更新完毕后、未提交之前,第一个库宕机,则只有第二个库数据提交。 支持情况 Sh...原创 2019-03-21 14:25:41 · 3829 阅读 · 2 评论 -
15.分库分表(三)-实战
我写了一个小demo,示范sharding-jdbc的使用,代码在github上。 1.数据分片配置 // 配置真实数据源 Map<String, DataSource> dataSourceMap = new HashMap<>(); // 配置第一个数据源 BasicDataSource dataSource1 = new Ba...原创 2019-03-21 11:50:13 · 311 阅读 · 0 评论 -
11.优化服务器设置(一)-InnoDB缓冲池、线程缓存
1.配置语法、作用域和动态性 2.设置变量的副作用 3.技巧 4.MySQL配置文件 配置内存 计算每个连接的内存、为操作系统留内存,剩下的为缓存需要的内存。缓存 InnoDB缓冲池 线程缓存 表缓存 ...原创 2019-03-12 20:03:41 · 215 阅读 · 0 评论 -
6.高性能索引策略(二)
1.覆盖索引 概念: 优点: 索引可以放在内存中,减少磁盘IO。 索引按顺序查询,避免磁盘随机IO。 对InnoDB引擎,可以避免二级查询。(因为二级索引存了主键) 注意: 在5.5之前,即使不符合条件也要回表,explain出现using where。 2.索引条件下推 可以在索引遍历过程中,对索引中包含的字段先做判断,直接过滤掉不满足条件的记录,减少...原创 2019-03-08 11:47:18 · 162 阅读 · 0 评论 -
13.分库分表(一)-概念及功能简介
1.ShardingSphere简介 Sharding-JDBC 定位为轻量级Java框架,在Java的JDBC层提供的额外服务。 它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。 Sharding-Proxy 定位为透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异...原创 2019-03-16 21:25:20 · 350 阅读 · 0 评论 -
10.剖析MySQL查询
目录 1.慢查询日志 2.SHOW PROFILE 3.SHOW STATUS 4.mysqladmin 5.PERFORMANCE_SCHEMA 6.EXPLAIN 1.慢查询日志 相关参数: slow_query_log :是否开启慢查询日志,ON表示开启,OFF表示关闭。 log_slow_queries :旧版(5.6以下版本)MySQL数据库慢查询日志存储...原创 2019-03-12 10:42:47 · 142 阅读 · 0 评论 -
9.查询性能优化(三)-优化特定类型查询
目录 1.优化count 2.优化关联查询 3.优化子查询 4.优化GROUP BY 和 DISTINCT 5.优化LIMIT分页 6.优化UNION 1.优化count MyISAM只有在没有where条件时才会快 2.优化关联查询 3.优化子查询 4.优化GROUP BY 和 DISTINCT 临时表和文件排序 ONLY_FULL_GR...原创 2019-03-11 15:08:00 · 173 阅读 · 0 评论 -
5.高性能索引策略(一)
一些技巧:https://www.cnblogs.com/wangxusummer/p/5329813.html 1.前缀索引与索引的选择性 概念: 计算方法: 缺点: 2.选择合适的索引列顺序 3.聚簇索引 优点: 缺点: 与MyISAM比较: 主键: ...原创 2019-03-07 18:51:53 · 213 阅读 · 0 评论 -
8.查询性能优化(二)-查询优化器的局限性和提示(hint)
1.union限制 2.最大值最小值优化 3.查询优化器的提示原创 2019-03-10 18:07:17 · 143 阅读 · 0 评论 -
7.查询性能优化(一)-查询过程
目录 1.架构 2.连接器 3.分析器 4.优化器 1.架构 2.连接器 通信协议 半双工。客户端发送一个单独数据包给服务器(大小由max_allowed_packet控制)。服务器返回多个数据包。 查询状态:show full processlist 这里的线程对应连接池中配置的线程 3.分析器 语法解析器和预处理 4.优化器 ...原创 2019-03-10 09:50:58 · 167 阅读 · 0 评论 -
3.全局锁、表锁、行锁,死锁
全局锁 对整个数据库实例加锁。 MySQL提供加全局读锁的方法:Flush tables with read lock(FTWRL) 这个命令可以使整个库处于只读状态。使用该命令之后,数据更新语句、数据定义语句和更新类事务的提交语句等操作都会被阻塞。 (可以用unlock tables主动释放锁) 使用场景:全库逻辑备份。 风险: 1.如果在主库备份,在备份期间不能更新,业务停摆...原创 2019-03-05 15:35:56 · 365 阅读 · 0 评论 -
4.索引概念、分类
1.三中数据结构 hash 适用于只有等值查询 有序数组 优点:在等值查询和范围查询场景中的性能就都非常优秀, 缺点:插入一个记录就必须得挪动后面数据 适用于静态存储引擎 二叉树 优点:查询更新时间复杂度都是O(log(N)) 缺点:二叉树的高度太高,导致磁盘访问次数过高 N叉树解决高度过高的问题,InnoDB索引采用B+树 问题:InnoDB索引为什么采用B+树? 2.索...原创 2019-03-05 14:40:07 · 206 阅读 · 0 评论 -
2.事务与MVCC
1.ACID(通过银行转账进行说明) 注意:低级别隔离可以支持更高并发 2.隔离级别 未提交读 提交读 可重复读 需要注意,可重复读保证同一事物多次读取同样记录的结果是一致的,但未解决幻读问题。幻读需要MVCC解决。 串行化 3.MVCC 概念 实现方式 应用示例 在REPEATABLE READ隔离级别下: 需要注意: 当前读 update数据时都是先读...原创 2019-03-05 11:37:31 · 258 阅读 · 0 评论 -
联合索引原理
https://segmentfault.com/a/1190000010991930转载 2019-08-07 08:37:25 · 6705 阅读 · 0 评论