
MySQL
文章平均质量分 60
Peter Pan 1231
结硬寨 打呆仗 WebChat JianLong1231
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
IT老齐架构300讲笔记(074) 从76237到753毫秒,海量数据大页码MySQL查询该如何优化?
目录 一、场景需求 二、查询改进 2.1 初步改进 2.2 利用上下页机制改进 2.3 连续切换页还要考虑出现大量重复数据的情况 专栏链接: IT老齐架构300讲笔记 一、场景需求 按日期升序排列,查看第50000页数据 二、查询改进 2.1 初步改进 2.2 利用上下页机制改进 2.3 连续切换页还要考虑出现大量重复数据的情况 ...原创 2022-01-24 17:25:06 · 2396 阅读 · 0 评论 -
IT老齐架构300讲笔记(050) MySQL服务器该如何选择 CPU、内存、硬盘三大件
目录 一、CPU优先选大核还是选多核? 二、物理内存多大合适? 三、硬盘RAID该怎么选? 一、CPU优先选大核还是选多核? 二、物理内存多大合适? 三、硬盘RAID该怎么选?原创 2022-01-18 00:04:02 · 698 阅读 · 0 评论 -
IT老齐架构300讲笔记(044) 190毫秒干到2毫秒,2017阿里云SQL优化挑战赛实战分享
比赛出题人 表结构 待优化的SQL 第一次执行 选取驱动表 创建索引 再次执行 更详细的执行计划 发现问题 修改表结构 执行SQL均使用索引原创 2022-01-17 14:19:14 · 369 阅读 · 0 评论 -
IT老齐架构300讲笔记(040) 为什么表的主键要使用自增主键,不建议使用业务主键
目录 一、业务主键与自增代理主键 1.1 使用业务主键的缺点 1.2 使用场景 一、业务主键与自增代理主键 1.1 使用业务主键的缺点 1. 业务主键更浪费空间 2. 业务主键无顺序,可能会造成写入数据时需要更长组织索引 3. 业务主键如果是字符串,在分库分表时,无法直接取模运算,需要先转换为数字,处理更麻烦了。 1.2 使用场景 身份证从15位更新到18位 员工离职再入职 ...原创 2022-01-17 10:07:13 · 3146 阅读 · 2 评论 -
IT老齐架构300讲笔记(036) 阿里开发规范解读,小心MySQL索引选择性陷阱
目录 一、什么是索引选择性陷阱 1.1 InnoDB的存储结构 1.2 头匹配,尾匹配与任意匹配 1.3 索引选择性太差导致全表扫描 二、索引选择性差的场景 三、索引选择性差的解决方法 3.1 通过组合索引提高选择性 3.2引入搜索引擎 3.3 强制使用索引 3.4 增加缓存,提高全表扫描速度 一、什么是索引选择性陷阱 1.1 InnoDB的存储结构 1.2 头匹配,尾匹配与任意匹配 1.3 索引选择性太差导致全表扫描 命中的索引值超过总量25%,就可能产..原创 2022-01-16 23:48:33 · 1725 阅读 · 1 评论 -
IT老齐架构300讲笔记(030) MySQL MVCC机制
目录 MVCC 1.隔离级别 2.场景分析 ReadView 1.ReadView数据结构 2.读已提交(RC):在每一次执行快照读时生成ReadView 3.可重复读(RR):仅在第一次执行快照读时生成ReadView,后续快照读复用 MVCC 1.隔离级别 在MySQL InnoDB存储引擎下,RC、RR基于MVCC(多版本并发控制)进行并发事务控制 MVCC是基于”数据版本”对并发事务进行访问 2.场景分析 UNDO_LOG不是会被删除吗?中间数据万..原创 2022-01-14 09:06:00 · 840 阅读 · 0 评论 -
IT老齐架构300讲笔记(029) MySQL脏读、幻读、不可重复读
目录 脏读、不可重复读、幻读的区别与出现场景 事务隔离级别 脏读、不可重复读、幻读的区别与出现场景 脏读指读取到其他事务正在处理的未提交数据 不可重复读指并发更新时,另一个事务前后查询相同数据时的数据不符合预期 幻读指并发新增、删除这种会产生数量变化的操作时,另一个事务前后查询相同数据时的不符合预期 事务隔离级别 MySQL默认Repeatable Read(RR)-可重复读 MySQL 5.1以后默认存储引擎就是InnoDB 因此MySQL默认RR也能解.原创 2022-01-12 11:48:40 · 523 阅读 · 0 评论 -
IT老齐架构300讲笔记(016) MySQL高可用MHA架构方案
MHA:最成熟的mysql高可用方案 MHA介绍 场景:主服务器挂了,从服务器不会切换到主服务器,从而引出高可用MHA方案 。 MHA故障发现 1、启动:前置检查(配置文件等,不细说) 2、运行过程:若master挂了,MHA如何认定需要进行故障转移? (1)manger每3秒向主节点发送select 1 的SQL语句,判断主节点是否执行。3次ping无反应,认定master异常 (2)避免网络导致的无法ping通,manger让从属服务器MHA node尝试SSH登录检查,若所...原创 2022-01-10 09:39:29 · 915 阅读 · 0 评论 -
IT老齐架构300讲笔记(014) 巧用阿里Canal实现MySQL异构数据同步
目录 什么是异构数据? 场景 如何将后台的数据同步到es? 场景拓展 目标 Canal mysql数据库的主从同步的功能 Canal实现 引入MQ解决解耦问题 什么是异构数据? 场景 商户在后台系统添加数据,消费者需要在前台获取数据,这时候需要将后台的数据同步到es中。mysql的数据跟es存储的数据不一样,称为异构数据。 如何将后台的数据同步到es? 做法:团队A在java代码中新增mysql数据时,调用团队B的接口新增es商品数据。缺点:1、协作中两个团队存在代码原创 2022-01-09 23:02:49 · 736 阅读 · 0 评论 -
IT老齐架构300讲笔记(012) 阿里开发规范中为什么禁用外键约束
目录 为什么不用外键约束 缺点 优点 禁用外键约束的原因 为什么不用外键约束 缺点 优点 禁用外键约束的原因 1.插入数据需要检查外键在引用的表是否存在,导致性能问题 2.并发读取会将要更改的page pin起来外键会被频繁检查,导致一直被锁定 pinned page在全部schedule操作执行完毕前不会应用到数据库,过多并发排队会导致崩溃 从而导致实际写入的表也就是订单明细表的,所有写操作未提交到DB而且崩溃 3.由于外键约束的级连删除 会导致在其他表引原创 2022-01-09 00:04:07 · 1716 阅读 · 0 评论 -
IT老齐架构300讲笔记(003) 大厂数据垂直分表
目录 什么是水平分表? 什么是垂直分表? 为什么要垂直分表? InnoDB处理引擎 InnoDB1.0后新特性,压缩页 垂直分页分析 垂直分表条件 字段放大小表的依据 什么是水平分表? 按行为单位对数据进行拆分(范围法,hash法)。特点:所有的表结构完全相同。用于解决数据量大的存储问题。 什么是垂直分表? 将表按列拆分成2张以上的小表,通过主外键关联获取数据。 为什么要垂直分表? InnoDB处理引擎 需要了解mysql的InnoDB处理引擎。 行数据称原创 2022-01-05 09:26:52 · 692 阅读 · 0 评论 -
IT老齐架构300讲笔记(002) MySQL集群模式与应用场景
目录 单库模式 读写分离集群模式 分库分表(分片)集群模式 分片算法 互联网主流方案 单库模式 单库模式:一个mysql数据库承载所有相关数据。 读写分离集群模式 读写分离集群模式:在原有的基础上增加中间层,与后端数据集构成读写分离的集群。 整体基础结构:原有的主库派生出子库1,子库2,利用mysql原有的主从同步机制(即为:binlog日志同步),将主库的数据变化在从库中复现,保证数据同步。主库一般用于写入处理,从库负责读取。 细节:如果直接面对主库进行操作无法完成读写原创 2022-01-05 09:03:04 · 657 阅读 · 0 评论 -
MySQL索引、锁、事务、MVCC、分库分表常见问题总结笔记(五) MySQL存储引擎InnoDB与Myisam的区别
MySQL有多种存储引擎,每种存储引擎有各自的优缺点,可以择优选择使用:MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE 比较常用的两种引擎是 MyISAM 和 InnoBD MyISAM InnoDB 构成上的区别: 每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名...原创 2022-01-04 09:57:30 · 159 阅读 · 0 评论 -
MySQL索引、锁、事务、MVCC、分库分表常见问题总结笔记(四) MySQL事务 锁 MVCC ACID
MVCC多版本并发控制 优点:提升读写效率 基础知识 当前读:读取的是数据最新版本 快照读:读取的是历史版本记录 关于快照读为什么无法读取已提交数据? 一、第一部分:隐藏字段, 每一行记录都会包含几个隐藏字段; 1.DB_TRX_ID:创建或最后一次修改该记录的事务id 2.DB_ROW_ID:隐藏主键,插入数据时,需要和索引绑定,先绑主键,没有主键绑唯一,没有唯一键就创建rowId索引并绑定。 3.DB_ROLL_...原创 2021-12-29 22:47:36 · 1282 阅读 · 0 评论 -
MySQL索引、锁、事务、MVCC、分库分表常见问题总结笔记(三) mysql聚簇索引和非聚簇索引 回表 索引覆盖 最左匹配 索引下推 mysql优化
4.mysql聚簇索引和非聚簇索引 回表 索引覆盖 最左匹配 索引下推原创 2021-12-29 11:19:09 · 408 阅读 · 0 评论 -
MySQL索引、锁、事务、MVCC、分库分表常见问题总结笔记(二) mysql索引的实现原理和数据结构及索引技巧
2.mysql索引的实现原理和数据结构 为什么不用Hash表存储MySQL数据 树 B树 b树存储的应该有key,value,指针(存储子节点地址信息)一个磁盘块16kb,读一个磁盘块就是读取16kb,其中大部分存储空间被value(data)占去。 B+树 特点:叶子节点存储数据,非叶子节点存储指针和key(主键)。 优点:由于指针和key只占用很小的空间,所以一个非叶子节点可以存储大量主键和指针,和b树相比,三层的b+树可以存储非常多的数据,确同样只需要读取3次...原创 2021-12-28 14:48:13 · 1632 阅读 · 0 评论 -
MySQL索引、锁、事务、MVCC、分库分表常见问题总结笔记(一) mysql执行计划
1.看懂mysql执行计划原创 2021-12-28 14:38:01 · 400 阅读 · 0 评论 -
MySQL学习笔记(二) 事务
MySQL学习笔记(二) 事务 https://notes.diguage.com/mysql 事务 事务是一组原子性的 SQL 查询,或者说是一个独立的工作单元。事务内的所有操作要么全部执行成功,要么全部执行失败。 2.1. 四个基本特性 Atomicity(原子性):事务是一个不可分割的整体,事务内所有操作要么全部提交成功,要么全部失败回滚。 Consistency(一致性):事务执行前后,数据从一个状态到另一个状态必须是一致的(A向B转账,不能出现A扣了钱,B却没收到)。原创 2021-03-03 15:03:20 · 184 阅读 · 0 评论 -
MySQL学习笔记(一) Schema设计
MySQL学习笔记(一) Schema设计 https://notes.diguage.com/mysql Schema 设计 良好的逻辑设计和物理设计是高性能的基石。 1.1. 数据类型的选择 更小的通常更好 简单就好 尽量避免 Null 1.1.1. 整数 整数类型: TINYINT 、 SMALLINT 、 MEDIUMINT 、 INT 、 BIGINT;分别使用 8、16、24、32、64 位存储空间。存储的范围从 -2(N-1) 到 2(N-1)-1原创 2021-03-03 14:14:18 · 307 阅读 · 0 评论 -
MySQL基础复习回顾(五) 视图
MySQL基础复习回顾(五) 视图 什么是视图 定义 一种虚拟存在的表,行和列的数据来自定义视图的查询中使用的表 ,并且是在使用视图时动态生成的,只保存了sql逻辑,不保存查询结果 应用场景 多个地方用到同样的查询结果 该查询结果使用的sql语句较复杂 示例 CREATE VIEW my_v1 AS SELECT studentname,majorname FROM student s INNER JOIN major m ON s.majorid=m.majorid WH..原创 2021-02-04 17:50:06 · 152 阅读 · 0 评论 -
MySQL基础复习回顾(四) 事务
MySQL基础复习回顾(四) 事务 目录 MySQL基础复习回顾(四) 事务 事务的概念和特性 MySQL中的存储引擎 事务的ACID属性 多事务并发引起的问题 数据库提供的 4 种事务隔离级别 事务的概念和特性 事务由单独单元的一个或多个SQL语句组成,在这个单元中,每个MySQL语句是相互依赖的。而整个单独单 元作为一个不可分割的整体,如果单元中某条SQL语句一旦执行失败或产生错误,整个单元将会回滚。所有受到影 响的数据将返回到事物开始以前的状态,如果单元中的所 有SQL语句均执行.原创 2021-02-04 17:35:01 · 228 阅读 · 0 评论 -
MySQL基础复习回顾(三) 约束
MySQL基础复习回顾(三) 约束和分页 约束 什么是约束 为了保证数据的一致性和完整性,SQL规范以约 束的方式对表数据进行额外的条件限制。 约束是表级的强制规定 可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通 过 ALTER TABLE 语句) 六大约束 NOT NULL:非空,用于保证该字段的值不能为空 比如姓名、学号等 DEFAULT:默认,用于保证该字段有默认值 比如性别 PRIMARY KEY:主键,用于保证该字段的...原创 2021-02-03 10:45:20 · 219 阅读 · 0 评论 -
MySQL基础复习回顾(二) MySQL基本使用
MySQL基本使用 目录 MySQL基本使用 MySQL架构 MySQL特点 MySQL登录、退出命令 MySQL语法规范 MySQL常用命令 MySQL架构 MySQL特点 MySQL数据库隶属于MySQL AB公司,总部位于瑞典,后被oracle收购。 成本低:开放源代码,一般可以免费试用 性能高:执行很快 简单:很容易安装和使用 MySQL登录、退出命令 mysql –h 主机名 –u 用户名 –p 密码 exit MySQL语法规范 不区分大小写 每原创 2021-01-29 15:13:05 · 166 阅读 · 0 评论 -
MySQL基础复习回顾(一) 概述
MySQL基础复习回顾(一) 数据库概述 目录 MySQL基础复习回顾(一) 数据库概述 数据库的好处 数据库的相关概念 SQL的优点 SQL分类 DML DDL DCL 数据库的好处 实现数据持久化 使用完整的管理系统统一管理,易于查询 数据库的相关概念 DB 数据库(database):存储数据的“仓库”。它保存了一系列有组织的数据。 DBMS 数据库管理系统(Database Management System)。数据库是通过DBMS创 建和操作的容器,MySq原创 2021-01-29 14:52:42 · 213 阅读 · 0 评论 -
极客时间 MySQL实战学习笔记 1-8讲
No.1 MySQL的基本架构 连接器:负责跟客户端建立连接、获取权限、维持和管理连接。查询缓存:查询请求先访问缓存(key 是查询的语句,value 是查询的结果)。命中直接返回。不推荐使用缓存,更新会把缓存清除(关闭缓存:参数 query_cache_type 设置成 DEMAND)。分析器:对 SQL 语句做解析,判断sql是否正确。优化器:决定使用哪个索引,多表关联(join)的时候...原创 2019-02-15 14:36:08 · 1166 阅读 · 0 评论 -
极客时间 MySQL实战学习笔记 9-15讲
No.9 普通索引和唯一索引,应该怎么选择? 查询过程 其实查询过程两者的时间差距是微乎其微的,普通索引要比唯一索引多一次判断下一条记录是否符合,但InnoDB 的数据是按数据页为单位来读写的,所以就算多读一次也占用不了多少时间 更新过程 普通索引可以使用change buffer,可以将一系列的更新写到change buffer中,后期再一次性写入到磁盘中,极大的提高了更新的效率,...原创 2019-02-15 14:40:30 · 690 阅读 · 0 评论