- 🎨文章分类 -
Welcome to my website ——by 陈震 (Chen Zhen)
# 索引 InnoDB采用了一个B+数来存储索引,使得在千万级数据量的一个情况下,树的高度可以控制在3层以内,而层高代表磁盘IO的一个次数,因此基于索引查找可以减少磁盘IO的次数 ![在这里插入图片描述](https://img-blog.csdnimg.cn/feea35fb49c94398b49e2ada20c91f33.png) MySQL的索引是在存储引擎层实现的,不同的存储引擎有不同的结构,主要包含以下几种
ChenZhen# SQL性能分析 ## SQL性能下降原因: 1. 查询语句写的烂 2. 索引失效(数据变更) 3. 关联查询太多`join`(设计缺陷或不得已的需求) 4. 服务器调优及各个参数设置(缓冲、线程数等)
ChenZhen# 存储引擎的选择 在选择存储引擎时,应该根据应用系统的特点选择合适的存储引擎。对于复杂的应用系统,还可以根据实际情况选择多种存储引擎进行组合。 - **InnoDB**:是Mysql的默认存储引擎,支持事务、外键。如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多更新、删除操作,那么InnoDB存储引擎是比较合适的选择。
ChenZhen# 主从复制 ## 复制的基本原理 `slave`会从`master`读取`binlog`来进行数据同步 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/6328d3b1531842ccb7a8c36697eff764.png) MySQL复制过程分成三步: 1. `master`将改变记录到二进制日志(`binary log`)。这些记录过程叫做二进制日志事件,`binary log events`;
ChenZhen今天在云服务器上使用`docker`部署`mysql 8.0.11`时,遇到了一个诡异的问题,在云服务器的`docker`容器内可以连接上mysql,然而在自己电脑上连接mysql时报错:`Can‘t connect to MySQL server on localhost (10060)` ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/3dff34a6196346379954107dea0cd50e.png)
ChenZhen是Apache基金会下的一个开源项目,提供分布式数据库中间件解决方案。已经在2020年4月16日从Apache孵化器毕业,成为 Apache 顶级项目。其主要功能包括数据分片(Sharding)、读写分离、分布式事务以及数据加密等。:轻量级的 Java 框架,直接集成在应用程序中,提供数据库分片、读写分离等功能。需要在中集成,编写相关的配置。如果分片策略用默认的4种,那可以只改配置就好了。如果分片策略很特殊,可以通过实现抽象类,写自定义的方法进行分片分库。:独立部署的数据库代理,支持所有兼容MySQL。
ChenZhen很多公司没有专业的DBA,很多时候开发人员在开发时不得不手动在生产环境下操作数据库,总所周知,在生产环境下操作数据非常危险,如果update更新或delete删除语句忘写了where条件或者写错了where条件,那么只能跑路了。为了保证万无一失,笔者在操作数据库前会进行数据备份,如此一来,即使手抖出错,数据也能及时从备份中恢复。我总结了mysql几种备份数据的方法。
ChenZhen# 索引 InnoDB采用了一个B+数来存储索引,使得在千万级数据量的一个情况下,树的高度可以控制在3层以内,而层高代表磁盘IO的一个次数,因此基于索引查找可以减少磁盘IO的次数 ![在这里插入图片描述](https://img-blog.csdnimg.cn/feea35fb49c94398b49e2ada20c91f33.png) MySQL的索引是在存储引擎层实现的,不同的存储引擎有不同的结构,主要包含以下几种
ChenZhen# SQL性能分析 ## SQL性能下降原因: 1. 查询语句写的烂 2. 索引失效(数据变更) 3. 关联查询太多`join`(设计缺陷或不得已的需求) 4. 服务器调优及各个参数设置(缓冲、线程数等)
ChenZhen# 存储引擎的选择 在选择存储引擎时,应该根据应用系统的特点选择合适的存储引擎。对于复杂的应用系统,还可以根据实际情况选择多种存储引擎进行组合。 - **InnoDB**:是Mysql的默认存储引擎,支持事务、外键。如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多更新、删除操作,那么InnoDB存储引擎是比较合适的选择。
ChenZhen# 主从复制 ## 复制的基本原理 `slave`会从`master`读取`binlog`来进行数据同步 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/6328d3b1531842ccb7a8c36697eff764.png) MySQL复制过程分成三步: 1. `master`将改变记录到二进制日志(`binary log`)。这些记录过程叫做二进制日志事件,`binary log events`;
ChenZhen今天在云服务器上使用`docker`部署`mysql 8.0.11`时,遇到了一个诡异的问题,在云服务器的`docker`容器内可以连接上mysql,然而在自己电脑上连接mysql时报错:`Can‘t connect to MySQL server on localhost (10060)` ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/3dff34a6196346379954107dea0cd50e.png)
ChenZhen是Apache基金会下的一个开源项目,提供分布式数据库中间件解决方案。已经在2020年4月16日从Apache孵化器毕业,成为 Apache 顶级项目。其主要功能包括数据分片(Sharding)、读写分离、分布式事务以及数据加密等。:轻量级的 Java 框架,直接集成在应用程序中,提供数据库分片、读写分离等功能。需要在中集成,编写相关的配置。如果分片策略用默认的4种,那可以只改配置就好了。如果分片策略很特殊,可以通过实现抽象类,写自定义的方法进行分片分库。:独立部署的数据库代理,支持所有兼容MySQL。
ChenZhen很多公司没有专业的DBA,很多时候开发人员在开发时不得不手动在生产环境下操作数据库,总所周知,在生产环境下操作数据非常危险,如果update更新或delete删除语句忘写了where条件或者写错了where条件,那么只能跑路了。为了保证万无一失,笔者在操作数据库前会进行数据备份,如此一来,即使手抖出错,数据也能及时从备份中恢复。我总结了mysql几种备份数据的方法。
ChenZhen