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 · 2329 阅读 · 0 评论 -
IT老齐架构300讲笔记(050) MySQL服务器该如何选择 CPU、内存、硬盘三大件
目录一、CPU优先选大核还是选多核?二、物理内存多大合适?三、硬盘RAID该怎么选?一、CPU优先选大核还是选多核?二、物理内存多大合适?三、硬盘RAID该怎么选?原创 2022-01-18 00:04:02 · 658 阅读 · 0 评论 -
IT老齐架构300讲笔记(044) 190毫秒干到2毫秒,2017阿里云SQL优化挑战赛实战分享
比赛出题人表结构待优化的SQL第一次执行 选取驱动表创建索引再次执行更详细的执行计划 发现问题 修改表结构执行SQL均使用索引原创 2022-01-17 14:19:14 · 314 阅读 · 0 评论 -
IT老齐架构300讲笔记(040) 为什么表的主键要使用自增主键,不建议使用业务主键
目录一、业务主键与自增代理主键1.1 使用业务主键的缺点1.2 使用场景一、业务主键与自增代理主键1.1 使用业务主键的缺点1. 业务主键更浪费空间2. 业务主键无顺序,可能会造成写入数据时需要更长组织索引3. 业务主键如果是字符串,在分库分表时,无法直接取模运算,需要先转换为数字,处理更麻烦了。1.2 使用场景身份证从15位更新到18位员工离职再入职...原创 2022-01-17 10:07:13 · 3087 阅读 · 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 · 1676 阅读 · 1 评论 -
IT老齐架构300讲笔记(030) MySQL MVCC机制
目录MVCC1.隔离级别2.场景分析 ReadView1.ReadView数据结构2.读已提交(RC):在每一次执行快照读时生成ReadView3.可重复读(RR):仅在第一次执行快照读时生成ReadView,后续快照读复用MVCC1.隔离级别在MySQL InnoDB存储引擎下,RC、RR基于MVCC(多版本并发控制)进行并发事务控制MVCC是基于”数据版本”对并发事务进行访问2.场景分析 UNDO_LOG不是会被删除吗?中间数据万..原创 2022-01-14 09:06:00 · 771 阅读 · 0 评论 -
IT老齐架构300讲笔记(029) MySQL脏读、幻读、不可重复读
目录脏读、不可重复读、幻读的区别与出现场景事务隔离级别脏读、不可重复读、幻读的区别与出现场景脏读指读取到其他事务正在处理的未提交数据 不可重复读指并发更新时,另一个事务前后查询相同数据时的数据不符合预期 幻读指并发新增、删除这种会产生数量变化的操作时,另一个事务前后查询相同数据时的不符合预期事务隔离级别MySQL默认Repeatable Read(RR)-可重复读MySQL 5.1以后默认存储引擎就是InnoDB因此MySQL默认RR也能解.原创 2022-01-12 11:48:40 · 488 阅读 · 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 · 860 阅读 · 0 评论 -
IT老齐架构300讲笔记(014) 巧用阿里Canal实现MySQL异构数据同步
目录什么是异构数据?场景如何将后台的数据同步到es?场景拓展目标Canalmysql数据库的主从同步的功能Canal实现引入MQ解决解耦问题什么是异构数据?场景商户在后台系统添加数据,消费者需要在前台获取数据,这时候需要将后台的数据同步到es中。mysql的数据跟es存储的数据不一样,称为异构数据。如何将后台的数据同步到es?做法:团队A在java代码中新增mysql数据时,调用团队B的接口新增es商品数据。缺点:1、协作中两个团队存在代码原创 2022-01-09 23:02:49 · 684 阅读 · 0 评论 -
IT老齐架构300讲笔记(012) 阿里开发规范中为什么禁用外键约束
目录为什么不用外键约束缺点优点禁用外键约束的原因为什么不用外键约束缺点优点禁用外键约束的原因1.插入数据需要检查外键在引用的表是否存在,导致性能问题2.并发读取会将要更改的page pin起来外键会被频繁检查,导致一直被锁定pinned page在全部schedule操作执行完毕前不会应用到数据库,过多并发排队会导致崩溃从而导致实际写入的表也就是订单明细表的,所有写操作未提交到DB而且崩溃3.由于外键约束的级连删除会导致在其他表引原创 2022-01-09 00:04:07 · 1636 阅读 · 0 评论 -
IT老齐架构300讲笔记(003) 大厂数据垂直分表
目录什么是水平分表?什么是垂直分表?为什么要垂直分表?InnoDB处理引擎InnoDB1.0后新特性,压缩页垂直分页分析垂直分表条件字段放大小表的依据什么是水平分表?按行为单位对数据进行拆分(范围法,hash法)。特点:所有的表结构完全相同。用于解决数据量大的存储问题。什么是垂直分表?将表按列拆分成2张以上的小表,通过主外键关联获取数据。为什么要垂直分表?InnoDB处理引擎需要了解mysql的InnoDB处理引擎。行数据称原创 2022-01-05 09:26:52 · 647 阅读 · 0 评论 -
IT老齐架构300讲笔记(002) MySQL集群模式与应用场景
目录单库模式读写分离集群模式分库分表(分片)集群模式分片算法互联网主流方案单库模式单库模式:一个mysql数据库承载所有相关数据。读写分离集群模式读写分离集群模式:在原有的基础上增加中间层,与后端数据集构成读写分离的集群。整体基础结构:原有的主库派生出子库1,子库2,利用mysql原有的主从同步机制(即为:binlog日志同步),将主库的数据变化在从库中复现,保证数据同步。主库一般用于写入处理,从库负责读取。细节:如果直接面对主库进行操作无法完成读写原创 2022-01-05 09:03:04 · 608 阅读 · 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 · 139 阅读 · 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 · 1245 阅读 · 0 评论 -
MySQL索引、锁、事务、MVCC、分库分表常见问题总结笔记(三) mysql聚簇索引和非聚簇索引 回表 索引覆盖 最左匹配 索引下推 mysql优化
4.mysql聚簇索引和非聚簇索引回表 索引覆盖 最左匹配 索引下推原创 2021-12-29 11:19:09 · 387 阅读 · 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 · 1604 阅读 · 0 评论 -
MySQL索引、锁、事务、MVCC、分库分表常见问题总结笔记(一) mysql执行计划
1.看懂mysql执行计划原创 2021-12-28 14:38:01 · 369 阅读 · 0 评论 -
MySQL学习笔记(二) 事务
MySQL学习笔记(二) 事务https://notes.diguage.com/mysql事务事务是一组原子性的 SQL 查询,或者说是一个独立的工作单元。事务内的所有操作要么全部执行成功,要么全部执行失败。2.1. 四个基本特性 Atomicity(原子性):事务是一个不可分割的整体,事务内所有操作要么全部提交成功,要么全部失败回滚。 Consistency(一致性):事务执行前后,数据从一个状态到另一个状态必须是一致的(A向B转账,不能出现A扣了钱,B却没收到)。原创 2021-03-03 15:03:20 · 153 阅读 · 0 评论 -
MySQL学习笔记(一) Schema设计
MySQL学习笔记(一) Schema设计https://notes.diguage.com/mysqlSchema 设计良好的逻辑设计和物理设计是高性能的基石。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 · 255 阅读 · 0 评论 -
MySQL基础复习回顾(五) 视图
MySQL基础复习回顾(五) 视图什么是视图定义一种虚拟存在的表,行和列的数据来自定义视图的查询中使用的表 ,并且是在使用视图时动态生成的,只保存了sql逻辑,不保存查询结果应用场景多个地方用到同样的查询结果 该查询结果使用的sql语句较复杂示例CREATE VIEW my_v1ASSELECT studentname,majorname FROM student sINNER JOIN major m ON s.majorid=m.majorid WH..原创 2021-02-04 17:50:06 · 132 阅读 · 0 评论 -
MySQL基础复习回顾(四) 事务
MySQL基础复习回顾(四) 事务目录MySQL基础复习回顾(四) 事务事务的概念和特性MySQL中的存储引擎事务的ACID属性多事务并发引起的问题数据库提供的 4 种事务隔离级别事务的概念和特性事务由单独单元的一个或多个SQL语句组成,在这个单元中,每个MySQL语句是相互依赖的。而整个单独单 元作为一个不可分割的整体,如果单元中某条SQL语句一旦执行失败或产生错误,整个单元将会回滚。所有受到影 响的数据将返回到事物开始以前的状态,如果单元中的所 有SQL语句均执行.原创 2021-02-04 17:35:01 · 195 阅读 · 0 评论 -
MySQL基础复习回顾(三) 约束
MySQL基础复习回顾(三) 约束和分页约束什么是约束为了保证数据的一致性和完整性,SQL规范以约 束的方式对表数据进行额外的条件限制。 约束是表级的强制规定 可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通 过 ALTER TABLE 语句)六大约束NOT NULL:非空,用于保证该字段的值不能为空 比如姓名、学号等 DEFAULT:默认,用于保证该字段有默认值 比如性别 PRIMARY KEY:主键,用于保证该字段的...原创 2021-02-03 10:45:20 · 187 阅读 · 0 评论 -
MySQL基础复习回顾(二) MySQL基本使用
MySQL基本使用目录MySQL基本使用MySQL架构MySQL特点MySQL登录、退出命令MySQL语法规范MySQL常用命令MySQL架构MySQL特点MySQL数据库隶属于MySQL AB公司,总部位于瑞典,后被oracle收购。成本低:开放源代码,一般可以免费试用 性能高:执行很快 简单:很容易安装和使用MySQL登录、退出命令mysql –h 主机名 –u 用户名 –p 密码exitMySQL语法规范不区分大小写 每原创 2021-01-29 15:13:05 · 153 阅读 · 0 评论 -
MySQL基础复习回顾(一) 概述
MySQL基础复习回顾(一) 数据库概述目录MySQL基础复习回顾(一) 数据库概述数据库的好处数据库的相关概念SQL的优点SQL分类DMLDDLDCL数据库的好处实现数据持久化 使用完整的管理系统统一管理,易于查询数据库的相关概念DB 数据库(database):存储数据的“仓库”。它保存了一系列有组织的数据。 DBMS 数据库管理系统(Database Management System)。数据库是通过DBMS创 建和操作的容器,MySq原创 2021-01-29 14:52:42 · 176 阅读 · 0 评论 -
极客时间 MySQL实战学习笔记 1-8讲
No.1 MySQL的基本架构连接器:负责跟客户端建立连接、获取权限、维持和管理连接。查询缓存:查询请求先访问缓存(key 是查询的语句,value 是查询的结果)。命中直接返回。不推荐使用缓存,更新会把缓存清除(关闭缓存:参数 query_cache_type 设置成 DEMAND)。分析器:对 SQL 语句做解析,判断sql是否正确。优化器:决定使用哪个索引,多表关联(join)的时候...原创 2019-02-15 14:36:08 · 998 阅读 · 0 评论 -
极客时间 MySQL实战学习笔记 9-15讲
No.9 普通索引和唯一索引,应该怎么选择?查询过程其实查询过程两者的时间差距是微乎其微的,普通索引要比唯一索引多一次判断下一条记录是否符合,但InnoDB 的数据是按数据页为单位来读写的,所以就算多读一次也占用不了多少时间更新过程普通索引可以使用change buffer,可以将一系列的更新写到change buffer中,后期再一次性写入到磁盘中,极大的提高了更新的效率,...原创 2019-02-15 14:40:30 · 655 阅读 · 0 评论