
MySQL
文章平均质量分 77
MySQL 知识点
xMustang
知识点,串成线,织成网
展开
-
1. MySQL 概述
1. MySQL 体系结构MySQL 体系结构分为连接层、服务层、存储引擎层。MySQL 的存储引擎层是插件式的,并且是基于表的,而不是基于数据库的,也就是不同的表可以使用不同的存储引擎,而不是整个数据库使用同一个存储引擎。...原创 2022-04-14 00:17:21 · 577 阅读 · 0 评论 -
2. 事务
1. 什么是事务事务是 DBMS 执行过程中的一个逻辑单位。这个逻辑单位由一个有限的数据库操作序列构成,不可分割,要么全部成功,要么全部不成功。2. 事务的 4 大特性原子性(Atomicity)一个事务必须被视为一个不可分割的最小单元,整个事务中的所有操作要么全部提交成功,要么全部失败,对于一个事务来说,不能只执行其中的一部分操作。一致性(Consistency)一致性是指事务将数据库从一种一致性转换到另外一种一致性状态,在事务开始之前和事务结束之后数据库中数据的完整性没有被破坏。持久性(原创 2022-04-14 15:34:54 · 815 阅读 · 0 评论 -
3. MySQL 表设计
1. 三范式要想设计—个好的关系,必须使关系满足一定的约束条件,此约束已经形成了规范,分成几个等级,一级比一级要求得严格。满足这些规范的数据库是简洁的、结构明晰的。一般满足三范式就可以了。1.1 第一范式每一列属性都是不可再分的属性值,确保每一列的原子性;两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据;单一属性的列为基本数据类型构成;设计出来的表都是简单的二维表。满足第一范式。1.2 第二范式第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是原创 2022-04-14 16:46:50 · 1553 阅读 · 0 评论 -
4.性能优化
1. 调优金字塔架构调优:采用更适合业务场景的架构能最大程度地提升系统的扩展性和可用性。在设计中进行垂直拆分能尽量解耦应用的依赖,对读压力比较大的业务进行读写分离能保证读性能线性扩展,而对于读写并发压力比较大的业务在 MySQL 上也有采用读写分离的大量案例。MySQL 调优:需要确认业务表结构设计是否合理,SQL 语句优化是否足够,该添加的索引是否都添加了,是否可以剔除多余的索引等等。硬件和 OS 调优:使用什么样的磁盘阵列(RAID)级别、是否可以分散磁盘 IO、是否使用裸设备存放数据,使用哪种原创 2022-04-16 13:00:41 · 780 阅读 · 0 评论 -
5. MySQL 底层执行原理
1. 索引合并MySQL 一般情况下执行一个查询时最多只会用到单个二级索引,但存在有特殊情况,在这些特殊情况下也可能在一个查询中使用到多个二级索引,MySQL 中这种使用到多个索引来完成一次查询的执行方法称之为:索引合并/index merge。1.1 Intersection 合并等值匹配SELECT * FROM order_exp WHERE order_no = ‘a’ AND expire_time = ‘b’; MySQL 使用 order_no 索引查出满足的数据,使用 expire_原创 2022-04-16 19:40:29 · 592 阅读 · 0 评论 -
MySQL 锁
1. 锁MySQL 的锁机制比较简单,最显著的特点是不同的存储引擎支持不同的锁机制,比如:MyISAM 和 MEMORY 存储引擎采用的是表级锁(table-level locking);InnoDB 存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用行级锁。2. 锁的类型表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。gap原创 2022-05-24 16:46:23 · 144 阅读 · 0 评论 -
1. 分库分表-1 MySQL 架构
1. MySQL 可扩展设计数据库扩展解决了什么问题?做热备份,保证多活,方便故障切换负载均衡、读写分离1.1 主从架构:Master-Slaves在实际应用场景中,MySQL 复制 90% 以上都是一个 Master 复制到一个或者多个 Slave 的架构模式。缺点:master 不能停机,停机就不能接收写请求。slave 过多会出现延迟。由于 master 需要进行常规维护停机了,那必须要把一个slave提成master,会存在某一个 slave 提成 master 后,存在原创 2022-05-22 22:54:09 · 515 阅读 · 0 评论 -
2. 分库分表-2 MyCat
1. 典型的分片规则按照用户 ID 求模,将数据分散到不同的数据库,具有相同数据用户的数据都被分散到一个库中。按照日期,将不同月甚至日的数据分散到不同的库中。按照某个特定的字段求摸,或者根据特定范围段分散到不同的库中。数据切分的经验:第一原则:能不切分尽量不要切分。第二原则:如果要切分一定要选择合适的切分规则,提前规划好。第三原则:数据切分尽量通过数据冗余或表分组(Table Group)来降低跨库 Join 的可能。第四原则:由于数据库中间件对数据 Join 实现的优劣难以把握,而且实原创 2022-05-24 10:26:29 · 467 阅读 · 1 评论 -
InnoDB 底层解析
InnoDB 是以页为基本单位在内存和磁盘间交互数据,页的大小一般为 16KB。1. 行格式记录在磁盘上的存储方式称为行格式。有 4 种类型的行格式:CompactRedundantDynamicCompressed1.1 指定行格式CREATE TABLE 表名 (列的信息) ROW_FORMAT=行格式名称1.2 Compact变长字段:VARCHAR、VARBINARY、TEXT、BLOB。NULL:每个允许存储 NULL 的列对应一个二进制位,为 1 表示该列为 N原创 2022-05-31 16:12:08 · 390 阅读 · 0 评论 -
索引000000
B+ 树:数据只存储在叶子节点上,非叶子节点只存储索引信息。叶子节点在逻辑上串联,物理上分散。该 B+ 树高度为 2每叶子页(LeafPage)4 条记录扇出数为 5叶子节点(LeafPage)由小到大(有序)串联在一起扇出:每个索引节点(Non-LeafPage)指向每个叶子节点(LeafPage)的指针。扇出数:索引节点(Non-LeafPage)可存储的最大关键字个数 + 1。普通索引:即一个索引只包含单个列,一个表可以有多个单列索引唯一索引:索引列的值必须唯一,但允许有空值原创 2022-05-24 18:52:04 · 98 阅读 · 0 评论