MySQL数据库
2021/9/9 19:34:02
本文主要是介绍MySQL数据库,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1 MySQL复制功能
1.1复制的作用
基于语句的复制和基于行的复制两种。
复制是让一台服务器的数据与其他服务器保持同步,通过复制可以让读操作指向备库来获得更好的读扩展。
- 数据分布
- 负载均衡
- 备份
- 高可用和故障切换
- MySQL升级测试
1.2复制如何进行工作
- 在主库上把数据更改记录到二进制文件。
- 备库将主库中的日志复制到自己的中继日志中。
- 备库读取中继日志事件,将其放到备库数据之上。
1.3 复制的原理
1、基于语句的复制
在Master上执行的SQL语句,在Slave上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。一旦发现没法精确复制时,会自动选着基于行的复制。实现简单。主备可能存在不同,存在无法被正确复制的SQL。主数据库除了执行语句外,还可能依赖提前因素。例如函数、触发器和存储过程。
2、基于行的复制
把改变的内容复制到Slave,而不是把命令在Slave上执行一遍。从MySQL5.0开始支持。好处是可以正确处理每一行
3、混合类型的复制
默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制
2 MySQL建立高性能索引与查询优化
2.1 建立索引
1 建立覆盖索引
利用覆盖索引查询数据,避免回表
2 前缀索引
对应varchar类型的字符,建立前缀索引,通常是以索引开始的部分字符,这样可以大大节约索引空间,提供索引效率
3 多列索引(联合索引)
当where后面跟多个条件时,可以考虑建多列索引,将选择性高的放在前面
2.2查询优化
1 优化排序
SELECT * FROM `order_assets` WHERE `asset_type` = 'device' ORDER BY `id` desc limit 200000 ,10;
随着偏移量的增加,MySQL需要扫描大量需要丢弃的数据,优化策略是使用延迟关联,通过覆盖索引查询需要的主键
SELECT * FROM `order_assets` INNER JOIN ( SELECT id FROM `order_assets` WHERE `asset_type` = 'device' ORDER BY `id` desc limit 200000 ,10) as x using(id);
2 慢SQL的原因
是否访问了太多不需要的数据行,或者列
扫描了过多的数据
这篇关于MySQL数据库的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-25MySQL报错Duplicate entry '0' for key 'PRIMARY'
- 2024-05-29阿里 Canal 实时同步 MySQL 增量数据至 ClickHouse 数据库
- 2024-05-24在Linux下管理MySQL的大小写敏感性
- 2024-04-26MySQL查出时间比实际晚8小时的解决方案
- 2024-04-01JPA不识别MySQL的枚举类型
- 2024-03-30mysql数据库表卡死解决方法
- 2024-03-15MySQL多数据源笔记5-ShardingJDBC实战
- 2024-03-11natural join mysql
- 2024-03-11关于VS2017,VS2015 中利用 EF使用Mysql 不显示数据源问题解决方案
- 2024-02-26mysql 阿里云xb后缀备份文件恢复-icode9专业技术文章分享