跳至主要內容
Mysql 高可用

Mysql 高可用

复制

复制是解决系统高可用的常见手段。其思路就是:不要把鸡蛋都放在一个篮子里。

复制解决的基本问题是让一台服务器的数据与其他服务器保持同步。一台主库的数据可以同步到多台备库上,备库本身也可以被配置成另外一台服务器的主库。主库和备库之 间可以有多种不同的组合方式。

MySQL 支持两种复制方式:基于行的复制和基于语句的复制。这两种方式都是通过在主库上记录 bin log、在备库重放日志的方式来实现异步的数据复制。这意味着:复制过程存在时延,这段时间内,主从数据可能不一致。

复制如何工作


钝悟...大约 5 分钟数据库关系型数据库Mysql数据库关系型数据库Mysql高可用
Mysql 面试

Mysql 面试

基础

EXISTS 和 IN 有什么区别?

  • EXISTS - 先对外表进行循环查询,再将查询结果放入 EXISTS 的子查询中进行条件比较,确定外层查询数据是否保留;
  • IN - 先查询内表,将内表的查询结果作为条件,提供给外表查询语句进行比较;

索引是个前提,其实选择与否还是要看表的大小。你可以将选择的标准理解为小表驱动大表。在这种方式下效率是最高的。

比如下面这样:


钝悟...大约 53 分钟数据库关系型数据库Mysql数据库关系型数据库Mysql面试
Mysql 锁

Mysql 锁

不同存储引擎对于锁的支持粒度是不同的,由于 InnoDB 是 Mysql 的默认存储引擎,所以本文以 InnoDB 对于锁的支持进行阐述。

锁的分类


钝悟...大约 28 分钟数据库关系型数据库Mysql数据库关系型数据库Mysql读写锁悲观锁乐观锁
Mysql 架构

Mysql 架构

大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。

Server 层包括连接器、查询缓存、解析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。

存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。现在最常用的存储引擎是 InnoDB,它从 MySQL 5.5.5 版本开始成为了默认存储引擎。


钝悟...大约 16 分钟数据库关系型数据库Mysql数据库关系型数据库Mysql日志binlogWAL
Mysql 索引

Mysql 索引

索引是提高 MySQL 查询性能的一个重要途径,但过多的索引可能会导致过高的磁盘使用率以及过高的内存占用,从而影响应用程序的整体性能。应当尽量避免事后才想起添加索引,因为事后可能需要监控大量的 SQL 才能定位到问题所在,而且添加索引的时间肯定是远大于初始添加索引所需要的时间,可见索引的添加也是非常有技术含量的。

接下来将向你展示一系列创建高性能索引的策略,以及每条策略其背后的工作原理。但在此之前,先了解与索引相关的一些算法和数据结构,将有助于更好的理解后文的内容。


钝悟...大约 23 分钟数据库关系型数据库Mysql数据库关系型数据库Mysql索引
Mysql 存储引擎

Mysql 存储引擎

在文件系统中,Mysql 将每个数据库(也可以成为 schema)保存为数据目录下的一个子目录。创建表示,Mysql 会在数据库子目录下创建一个和表同名的 .frm 文件保存表的定义。因为 Mysql 使用文件系统的目录和文件来保存数据库和表的定义,大小写敏感性和具体平台密切相关。Windows 中大小写不敏感;类 Unix 中大小写敏感。不同的存储引擎保存数据和索引的方式是不同的,但表的定义则是在 Mysql 服务层统一处理的。

MySQL 的存储引擎采用了插件的形式,每个存储引擎都面向一种特定的数据库应用环境。同时开源的 MySQL 还允许开发人员设置自己的存储引擎,下面是一些常见的存储引擎:


钝悟...大约 15 分钟数据库关系型数据库Mysql数据库关系型数据库Mysql存储引擎InnoDB
Mysql 优化

Mysql 优化

慢查询

慢查询日志可以帮我们找到执行慢的 SQL。

可以通过以下命令查看慢查询日志是否开启:

mysql> show variables like '%slow_query_log';
+----------------+-------+
| Variable_name  | Value |
+----------------+-------+
| slow_query_log | ON    |
+----------------+-------+
1 row in set (0.02 sec)

钝悟...大约 16 分钟数据库关系型数据库Mysql数据库关系型数据库Mysql优化
Mysql 事务

Mysql 事务

不是所有的 Mysql 存储引擎都实现了事务处理。支持事务的存储引擎有:InnoDBNDB Cluster。不支持事务的存储引擎,代表有:MyISAM

用户可以根据业务是否需要事务处理(事务处理可以保证数据安全,但会增加系统开销),选择合适的存储引擎。

事务简介

事务概念

“事务”指的是满足 ACID 特性的一组操作。事务内的 SQL 语句,要么全执行成功,要么全执行失败。可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。


钝悟...大约 25 分钟数据库关系型数据库Mysql数据库关系型数据库Mysql事务
Mysql 运维

Mysql 运维

如果你的公司有 DBA,那么我恭喜你,你可以无视 Mysql 运维。如果你的公司没有 DBA,那你就好好学两手 Mysql 基本运维操作,行走江湖,防身必备。

安装部署

Windows 安装

(1)下载 Mysql 5.7 免安装版

下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads


钝悟...大约 33 分钟数据库关系型数据库Mysql数据库关系型数据库Mysql运维