合集-MySQL高级
摘要:Linux下MySQL的安装 1 MySQL的安装 1.1 Linux系统以及工具的准备 这里使用两台CentOS7虚拟机,一台安装8.0版本,另一台克隆的虚拟机安装5.7版本 克隆的虚拟机需要进行配置修改: mac地址 主机名 cd /etc/hostname hadoop101 ip地址 vim
阅读全文
摘要:1 字符集的相关操作 MySQL8.0之前的版本,默认字符集为latin1,8.0及之后默认为utfmb3、utfmb4,如果以前的版本忘记修改默认的密码,就会出现乱码的问题。 1.1 修改步骤 修改mysql字符集配置 查看mysql的字符集编码 mysql> show variables lik
阅读全文
摘要:Mysql的主要目录结构 find / -name mysql 1 数据库文件的存放路径 /var/lib/mysql/ MySQL服务器程序会在启动的时候去文件系统下的某个目录加载一些文件,之后在运行过程中产生的数据也会存储到这个目录下的某个文件中,这个目录就称为数据目录。 可以通过命令查看当前数
阅读全文
摘要:用户与权限管理 :bust_in_silhouette:用户管理 MySQL用户分为普通用户和root用户,提供了许多语句来管理包括登录、退出MySQL服务器、创建用户、删除用户、密码管理和权限管理等内容。 :sailboat:登录MySQL服务器 mysql -h hostName|hostIP
阅读全文
摘要:#### 1 配置文件的使用 ##### my.cnf配置文件 /etc/my.cnf: ```bash [root@hadoop103 ~]# cat /etc/my.cnf # For advice on how to change settings please see # http://de
阅读全文
摘要:存储引擎 连接管理、查询缓存、解析器和执行器被归为MySQL service,而把真实存储数据的功能划分为存储引擎的功能。所以MySQL service经过查询优化后,只需按照生成的执行计划调用存储引擎的API获取数据,然后返回给客户端即可。存储引擎本质就是表的类型,功能是接收上层传来的指令,然
阅读全文
摘要:索引的数据结构 1 为什么使用索引 索引概述 索引(Index)是帮助MySQL高效获取数据的数据结构。是“排好序的快速查找结构”,满足特定的查找算法 索引是在存储引擎中实现的,每种存储引擎的索引不一定完全相同,每种存储引擎也不一定支持所有的索引 存储引擎可以定义每个表的最大索引数和最大索引长度 所
阅读全文
摘要:#### Hash索引 ##### 简介 **这部分略了** ##### Hash索引效率高,为什么还要设计索引结构为树形结构? - Hash索引仅能满足 **=、和IN查询**,如果进行`范围查询`,哈希的索引会退化成O(n);而树型的有序特性,仍然能够保持O(log2n)的效率 - Hash
阅读全文
摘要:#### InnoDB行格式 ##### 查看默认行格式: ```sql select @@innodb_default_row_format; ``` ##### 查看数据库表使用的行格式 ```sql mysql> use atguigudb; Reading table information
阅读全文
摘要:### InnoDB数据结构 #### 1 数据库的存储结构:页 索引信息和数据记录都是保存在文件上的,确切来说是保存在`页结构`中;另一方面,**索引是在存储引擎上实现的**,MySQL服务器上的存储引擎负责对表中数据的读取和写入工作。不同的存储引擎的`存放格式`是不同的,比如Memory甚至
阅读全文
摘要:### 表空间结构:区、段与碎片区 #### 为什么要有区? B+树中的每一层的页都会形成一个双向链表,双向链表之间的物理位置可能会离得非常远,当遇到范围查询的适用场景的时候,就会定位到最左边和最右边的记录,然后沿着双向链表一直扫描,而如果这其中的两个页面物理上离得特别远,就会成为`随机I/O`
阅读全文
摘要:### 索引的创建与设计原则 #### 1 索引的声明与使用 ##### 1.1 索引的分类 MySQL索引包括`普通索引`、`唯一性索引`、`全文索引`、`单列索引`、`多列索引`和`空间索引` - 按照逻辑结构划分,主要有四种:`普通索引`、`唯一性索引`、`主键索引`和`全文索引` - 按
阅读全文
摘要:### 索引使用的情况分析 #### 数据准备 - 创建表student_info、course ```sql CREATE TABLE `student_info` ( `id` int NOT NULL AUTO_INCREMENT, `student_id` int NOT NULL, `na
阅读全文
摘要:#### 性能分析工具SLOW QUERY LOG、PROFILE的使用 数据库调优的目标就是`响应速度更快,吞吐量更大`。利用宏观的监控工具和微观的日志分析可以帮助我们找到调优的思路和方式。 #### :star2: 数据库调优的步骤 整个流程分为了`观察(Show Status)`和`行
阅读全文
摘要:### 分析查询语句:EXPLAIN #### 1概述 **定位了查询慢的SQL之后,就可以使用EXPLAIN或者DESCRIBE工具做针对性的分析查询**。两者使用方法相同,并且分析结果也是相同的。 MySQL中有专门负责SQL语句优化的优化器模块,主要功能是计算分析系统中收集到的统计信息
阅读全文
摘要:#### 1 MySQL(十五)分析优化器的查询计划:Trace `OPTIMIZER_TRACE`是mysql 5.6引入的一项追踪功能,它可以追踪优化器做出的各种决策(比如访问表的方法、各种开销计算和各种转换等等),并将结果记录到表`INFORMATION_SCHEMA.OPTIMIZER_
阅读全文
摘要:### 索引优化 有哪些维度可以进行数据库调优? - 索引失效,没有充分利用到索引 建立索引 - 关联查询join太多(设计缺陷或不得已的需求) SQL优化 - 服务器调优及各个参数的设计(缓冲、线程池等) 调整my.cnf - 数据过多,SQL优化也到达了极限 分库分表 SQL查询优化可以分为`物
阅读全文
摘要:### 查询优化(一) #### 1 关联查询优化 ##### 数据准备 ```sql CREATE TABLE `type` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `card` INT(10) UNSIGNED NOT NULL, PRI
阅读全文
摘要:### 查询优化(二) #### 1 覆盖索引 ##### 什么是覆盖索引 看下面的例子,对于联合索引age_sno_name,当查询字段较少时能够使用索引,而字段较多的时候只能进行文件排序,这是由优化器判断通过**索引加回表**或者**直接文件排序**的成本来决定的。**这种一个索引包含了满足
阅读全文
摘要:### MySQL事务(一):事务的概述与使用 #### 1 数据库事务概述 **事务是数据库区别于文件系统的重要特性之一**,当我们有了事务就会让数据库始终保持`一致性`,同时我们还能通过事务的机制`恢复到某个时间点`,这样可以保证已提交到数据库的修改不会因为系统崩溃而丢失。 ##### 1.
阅读全文
摘要:### MySQL(十八)MySQL事务(二):事务的隔离级别 MySQL是一个`客户端/服务器`架构的软件,可以有若干个客户端与之连接,连接上之后都可以被称作是一个会话,每个客户端都可以在自己的会话中向服务器发出请求语句,一个请求语句可能是事务的一部分,**因此对于服务器来说需要同时处理多个事
阅读全文
摘要:### MySQL(十九)MySQL事务日志(一)RedoLog 事务的四种特性:`原子性`、`一致性`、`持久性`和隔离性都是基于什么机制实现的? - 事务的隔离性由`锁机制`实现 - 而事务的`原子性`、`一致性`和`持久性`则由事务的 `redo` 和 `undo` 日志来实现的 - `r
阅读全文
摘要:### MySQL(十九)MySQL事务日志(二)UndoLog #### 1 undo 日志概述 `redo log`是事务`持久性`的保障,而`undo log`则是事务`原子性`和`一致性`的保证,如上图,在事务中更新数据的前置操作其实是需要将数据写入到 `undo log` 方便回滚。
阅读全文
摘要:### MySQL(二十)锁(一)锁概述、S锁和X锁 #### 1 概述 - **`锁`是计算机协调多个线程或进程并发访问某一资源的机制**。 在程序开发过程中会存在多线程同步的问题,当多个线程并发访问某个数据的时候,尤其是一些敏感的数据(如金额、订单等),就需要保证**这个数据在任何时刻都最多
阅读全文
摘要:[TOC] ### MySQL(二十)锁(二)表锁、行锁与页级锁 ### 从操作粒度的锁类型划分:表级锁、行级锁和页锁 为了提高数据库的并发度,每次锁定的数据范围越小越好,理论上只锁定当前操作的数据的方案会获得最大的并发度,但是管理锁也是很耗费资源的事情(涉及锁的获取、检查和释放),因此需要在`
阅读全文
摘要:### MySQL(二十)锁(三)乐观锁与悲观锁 显式锁和隐式锁 #### 1 从对待锁的态度划分:乐观锁、悲观锁 - 从对待锁的态度划分,可以将锁划分为乐观锁和悲观锁,可以看出这两种锁是两种**对待数据并发的思维方式**。 - **乐观锁和悲观锁并不是锁,而是锁的设计思想** ##### 1.1
阅读全文
摘要:### MySQL(二十一)MVCC多版本并发控制 #### 1 什么是MVCC - MVCC(Multiversion Concurrency Control)多版本并发控制。即通过数据行的多个版本管理来实现数据库的并发控制,使得在InnoDB事务隔离级别下执行`一致性读`操作有了保障。 - 就是
阅读全文
摘要:### MySQL(二十二)其他数据库日志(一)通用查询日志和错误日志 #### 1 MySQL支持的日志 ##### 1.1 日志类型 - **慢查询日志**:记录执行时间超过`long_query_time`的所有查询,方便我们对查询进行优化 - **通用查询日志**:记录所有连接的起始和终止时
阅读全文
摘要:### MySQL(二十二)其他数据库日志(二)bin log二进制日志 #### 1 bin log二进制日志 - bin log 即 binary log,二进制日志,也叫做变更日志 - 它记录所有更新数据的DDL和DML语句,但是不包含没有修改数据的语句(如Select、show等),以`事件
阅读全文
摘要:### MySQL(二十三)主从复制 #### 1 主从复制概述 ##### 1.1 如何提高数据库并发能力 - 在实际工作中,常将`Redis`和`MySQL`配合使用,如果有请求的时候,首先在缓存中查找,如果存在就直接取出,不存在再访问数据库,这样就提升了读取的效率,减少了对后端数据库的访问压力
阅读全文

浙公网安备 33010602011771号