Mysql实战45讲学习详情
大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。 select * from T where ID=10;这条查询语句的执行过程:外部层: 用户与server层交互的媒介 一.客户端【用于连接数据库,输入命令/语句】 界面化连接数据库 输入 select * from T where ID=10;server层: ...
2024-01-10Mysql进阶
一、约束目的:使得数据更准确,更完整。约束的分类:键约束主键约束唯一键约束外键约束非空约束默认值约束自增约束检查约束(mysql暂时没有支持)二、主键约束(一)概述关键字 :primary key特点:增加主键约束的列(字段)的值必须是非空 + 唯一的,一个表只有一个主键约束作...
2024-01-10Mysql概念
关系数据库管理系统(Relational Database Management System)特点数据以表格的形式出现.每行为各种记录名称每列为记录名称所对应的数据域许多的行和列组成一张表单若干的表单组成database术语数据库: 数据库是一些关联表的集合。.数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电...
2024-01-10MySQL45讲2
前面我们了解了SQL查询语句是如何执行的,一条SQL查询语句的过程需要经过连接器、分析器、优化器、执行器等功能模块,最终到达存储引擎。在MySQL中,可以恢复到半个月内的任何一个时间点,这时基于日志系统来实现的。更新语句的流程在这个例子中,假设创建了表T。create table T(ID int primary key, c ...
2024-01-10Mysql主从部署
Mysql主从部署基于Mysql 5.7.26-1一、 安装Mysql 离线部署推荐使用 "RPM Bundle" https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar 在线安装可使用yum源 https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm 在线安装 rpm -ivh https://dev.mys...
2024-01-10Mysql环境部署
1.Window 1.1 下载软件: https://dev.mysql.com/downloads/mysql/ 依次点击上图 红色框中按钮 1.2 安装软件 1.2.1 解压软件 正常解压即可 目录 D:mysql-8.0.18-winx64 1.2.2 配置 在 D:m...
2024-01-10MySQL45讲之幻读flowers
本文介绍什么是幻读,幻读存在的问题和解决方式,以及间隙锁带来的困扰。 前言本文介绍什么是幻读,幻读存在的问题和解决方式,以及间隙锁带来的困扰。什么是幻读什么是幻读,有两个条件:必须是“当前读”情况下才可能发生,“...
2024-01-10Mysql基础(一)
准备工作1.开启服务器··windows系统: 方法1.搜索服务,找到mysql并开启. 方法2.如果安装的是5.7版本,cmd中输入:net start MySQL57··Mac系统: 系统偏好设置开启mysql,然后命令行运行以下代码出现base字样即可:source .bash_profile2.连接服务器: mysql -uroot -p密码3.修改登录密码:set password for roo...
2024-01-10Mysql如何处理死锁
MySQL有两种死锁处理方式:等待,直到超时(innodb_lock_wait_timeout=50s)。发起死锁检测,主动回滚一条事务,让其他事务继续执行(innodb_deadlock_detect=on)。由于性能原因,一般都是使用死锁检测来进行处理死锁。死锁检测死锁检测的原理是构建一个以事务为顶点、锁为边的有向图,判断有向图是否存在...
2024-01-10Mysql基础02约束
约束与索引概念1、数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。实体完整性(Entity Integrity):例如,同一个表中,不能存在两条完全相同无法区分的记录域完整性(Domain Integrity):例如:年龄范围0-120,性别范围“男/女”引用完整性(Referential Integrity):例...
2024-01-10MySQL45讲之前缀索引flowers
本文介绍字符串的前缀索引优缺点,以及字符串区分度不高情况下,可以考虑如何建立索引。 前言本文介绍字符串的前缀索引优缺点,以及字符串区分度不高情况下,可以考虑如何建立索引。前缀索引对于像SELECT * FROM t WHERE email = "xxxx@163.com"...
2024-01-10MySQL45讲之更新缓存flowers
本文介绍MySQL的更新缓存Change Buffer,以及唯一索引和普通索引如何选择。 前言本文介绍MySQL的更新缓存Change Buffer,以及唯一索引和普通索引如何选择。唯一索引和普通索引的选择查询过程唯一索引下,查询索引树,找到第一条匹配的行就返回...
2024-01-10MySQL45讲之表空间回收flowers
本文介绍为什么删除了一部分表数据后,表文件大小不变,以及有哪些表空间回收的方式。 前言本文介绍为什么删除了一部分表数据后,表文件大小不变,以及有哪些表空间回收的方式。为什么删除表数据后,表文件大小不变MySQL 采用的是标...
2024-01-10MySQL45讲之保证高可用flowers
本文主要介绍 MySQL 主备延迟,延迟产生的原因和主备切换策略。 前言本文主要介绍 MySQL 主备延迟,延迟产生的原因和主备切换策略。主备延迟主备同步过程中时间点主要有三个:主库A执行完成一个事务,写入binlog,我们把这个时刻记为T1;...
2024-01-10MySQL45讲之用户关注案例flowers
本文介绍 MySQL45 讲中提到的一个用户关注的案例,并记录下可行的处理方案。 前言本文介绍 MySQL45 讲中提到的一个用户关注的案例,并记录下可行的处理方案。业务背景业务上有这样的需求,A、B两个用户,如果互相关注,则成为好友。存在...
2024-01-10MySQL45讲之IO性能提升flowers
本文介绍 MySQL 的 binlog 和 redo log 写入机制和刷盘策略,以及如何提升 MySQL 的 IO 性能。 前言本文介绍 MySQL 的 binlog 和 redo log 写入机制和刷盘策略,以及如何提升 MySQL 的 IO 性能。binlog 的写入机制binlog 的写入流程是:先将日志写入到 binlog cache...
2024-01-10MySQL45讲之查询慢或者阻塞flowers
本文介绍锁表和执行慢的例子,以及发生锁表时的排查方法。 前言本文介绍锁表和执行慢的例子,以及发生锁表时的排查方法。锁表1. 等MDL锁比如像 select * from t where id=1; 长时间不返回,可能是因为等 MDL 锁而阻塞。排查方法:使用 show proces...
2024-01-10MySQL45讲之优化器选错索引flowers
本文简要介绍优化器选择索引的依据有哪些,有什么办法人为引导优化器选择更优的执行方案。 前言本文简要介绍优化器选择索引的依据有哪些,有什么办法人为引导优化器选择更优的执行方案。为什么会出现选错索引可能是统计索引基数信...
2024-01-10MySql常见约束
含义:一种限制,用于限制表中的数据,为了保证表中数据的准确性和可靠性。分类:六大约束 1.NOT NULL :非空,用于保证该字段的值不能为空。例如学生表的学生姓名及学号等等。 2.DEFAULT:默认值,用于保证该字段有默认值。例如学生表的学生性别 3.PRIMARY KEY:主键,用于保证该字段...
2024-01-10Mysql 1864 主从错误解决方法
从字面意思看了一下是因为slave_pending_jobs_size_max默认值为16777216(16MB),但是slave接收到的slave_pending_jobs_size_max为17085453(17M);解决方案从库执行如下SQLmysql>stop slave;mysql>set global slave_pending_jobs_size_max=20000000;mysql> start slave;#在多线程复制时,在队列中Pending的事件所占用的最大内存,默认为16M,如...
2024-01-10MySQL45讲之备库并行复制策略flowers
本文主要介绍 MySQL 备库的并行复制策略。 前言本文主要介绍 MySQL 备库的并行复制策略。为什么备库需要并行复制如果主库有大量更新操作,因为主库可以并发写入,而备库只能单线程执行的话,那么备库的同步延迟会不断累加,即备库越来...
2024-01-10MySQL45讲之随机查询和临时表flowers
本文介绍 MySQL 随机查询的工作流程、优化随机查询的方式、和临时表。 前言本文介绍 MySQL 随机查询的工作流程、优化随机查询的方式、和临时表。工作流程根据下表结构建立 words 表,并通过过程插入 10000 条模拟数据。CREATE TABLE `words` ( `id`...
2024-01-1004、MySql表的操纵(上)
表是数据库存储数据的基本单位,由若干个字段组成,主要用来存储数据记录。对表的操纵有创建表、查看表、修改表、删除表、向表中插入数据、修改表中的数据1、创建表 CREATE TABLE table_name (column_name column_type 约束条件)[存储引擎 字符集]; 或者:CREATE TABLE IF NOT EXISTS table_name (column_name co...
2024-01-10MySQL45讲之生产环境下的性能问题flowers
本文介绍一些常见的性能问题,以及在生产环境下应该如何解决。 前言本文介绍一些常见的性能问题,以及在生产环境下应该如何解决。1. 短连接风暴当由于大量短连接造成数据库性能低时,首先考虑一些无损安全的解决方案,如果是必须立...
2024-01-10MySQL45讲之InnoDB加锁规则flowers
本文介绍 MySQL InnoDB 的加锁规则,以及分析加锁时,一些需要注意的点。 前言本文介绍 MySQL InnoDB 的加锁规则,以及一些需要注意的点。总结两个原则,两个优化,一个 bug:原则1:加锁的基本单位是 next-key 锁,是一个前开后闭区间原则2:查...
2024-01-10