• 都有哪些维度可以进行数据库调优?简言之:

    • 索引失效、没有充分利用到索引——索引建立。
    • 关联查询太多JOIN (设计缺陷或不得已的需求)——SQL优化。
    • 服务器调优及各个参数设置(缓冲、线程数等)———调整my.cnf。
    • 数据过多――分库分表。
  • 关于数据库调优的知识点非常分散。不同的DBMS,不同的公司,不同的职位,不同的项目遇到的问题都不尽相同。这里我们分为三个章节进行细致讲解。

    Read more »

1、数据库服务器的优化步骤

  • 当我们遇到数据库调优问题的时候,该如何思考呢?这里把思考的流程整理成下面这张图。

  • 整个流程划分成了观察(Show status)行动(Action)两个部分。字母S的部分代表观察(会使用相应的分析工具),字母A代表的部分是行动(对应分析可以采取的行动)。

    Read more »

1、索引的声明与使用

1.1 索引的分类

  • MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。
    • 功能逻辑上说,索引主要有 4 种,分别是普通索引、唯一索引、主键索引、全文索引。

    • 照物理实现方式,索引可以分为 2 种:聚簇索引和非聚簇索引。

    • 按照作用字段个数进行划分,分成单列索引和联合索引。

Read more »

1、数据库的存储结构:页

  • 索引结构给我们提供了高效的索引方式,不过索引信息以及数据记录都是保存在文件上的,确切说是存储在页结构中。另一方面,索引是在存储引擎中实现的,MySQL服务器上的存储引擎负责对表中数据的读取和写入工作。不同存储引擎中存放的格式一般是不同的,甚至有的存储引擎比如Memory都不用磁盘来存储数据。
  • 由于InnoDB是MySQL的默认存储引擎,所以本章剖析InnoDB存储引擎的数据存储结构。
    Read more »

1、为什么使用索引

  • 索引是存储引擎用于快速找到数据记录的一种数据结构,就好比一本教课书的目录部分,通过目录中找到对应文章的页码,便可快速定位到需要的文章。MySQL中也是一样的道理,进行数据查找时,首先查看查询条件是否命中某条索引,符合则通过索引查找相关数据,如果不符合则需要全表扫描,即需要一条一条地查找记录,直到找到与条件符合的记录。

    Read more »

  • 为了管理方便,人们把连接管理查询缓存语法解析查询优化这些并不涉及真实数据存储的功能划分为MySQL server的功能,把真实存取数据的功能划分为存储引擎的功能。所以在MySQL server完成了查询优化后,只需按照生成的执行计划调用底层存储引擎提供的API,获取到数据后返回给客户端就好了。
  • MySQL中提到了存储引擎的概念。简而言之,存储引擎就是指表的类型。其实存储引擎以前叫做表处理器,后来改名为存储引擎,它的功能就是接收上层传下来的指令,然后对表中的数据进行提取或写入操作。
    Read more »

1、逻辑架构剖析

1.1 服务器处理客户端请求

  • 首先MySQL是典型的C/S架构,即Client/Server架构,服务器端程序使用的mysqld。

  • 不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果都是:客户端进程向服务器进程发送一段文本(SQL语句),服务器进程处理后再向客户端进程发送一段文本(处理结果)

  • 那服务器进程对客户端进程发送的请求做了什么处理,才能产生最后的处理结果呢?这里以查询请求为例展示:

    Read more »

1、用户管理

  • MySQL用户可以分为普通用户和root用户。root用户是超级管理员,拥有所有权限,包括创建用户、删除用户和修改用户的密码等管理限;普通用户只拥有被授予的各种权限。
  • MySQL提供了许多语句用来管理用户账号,这些语句可以用来管理包括登录和退出MySQL服务器、创用户、删除用户、密码管理和双限管拜等内容。
  • MySQL数据库的安全性需要通过账户管理来保证。
    Read more »

1、MySQL8的主要目录结构

1
2
3
4
5
root@f0796ad75d78:/# find / -name mysql
/etc/mysql
/usr/lib/mysql
/usr/bin/mysql
…………
Read more »

1、各级别的字符集

  • MySQL有4个级别的字符集和比较规则,分别是:

    • 服务器级别。
    • 数据库级别。
    • 表级别。
    • 列级别。
Read more »