MySQL知识复习1

MySQL存储引擎

最小单位一个 Page(16KB)

页头(记录页面的控制信息,共56字节),包括页的左右兄弟页面指针,页面空间使用情况等。

虚记录(最大虚记录,最小虚记录)

记录堆

自由空间链表

未分配空间

页尾

页内记录维护(顺序保证,插入策略,页内查询)

顺序保证:物理有序,逻辑有序(推荐选择,可以优化读)

一个索引树,连接每个逻辑有序的页,通过链表连接所有兄弟页。

插入策略:自由空间链表(优先),未使用空间

页内查询:遍历,二分查找(优先)

InnnoDB内存管理

预分配内存空间,数据加载单元,数据内外存交换

Buffer Pool(预分配的内存池),Page(Buffer Pool的最小单位),Free list(空闲Page组成的链表),Page hash表(维护内存Page和文件Page的映射关系),LRU(内存淘汰算法)

LRU:将热数据装在到表头,最冷的数据装在到表尾

LRU_new,LRU_old,Midpoint,做冷热数据分离。

页面装载:磁盘数据到内存,Free list中取>LRU中淘汰>Flush LRU淘汰

页面淘汰:LRU尾部淘汰,Flush LRU淘汰

页面移动:

old到new:innodb_old_blocks_time,old区存活时间大于此值有机会进入new区。

new到old:因为Midpoin指向5/8位置,

LRU_new的操作:减少大家竞争锁Lock的次数,减少移动次数(1.free_page_clock:Buffer Pool淘汰页数,2.LRU_new长度1/4)

MySQL事务基本概念

事务特性(ACID,AID必然C),并发问题,隔离级别

并发问题:脏读(督导未提交的数据),不可重复读(两次读取结果不同),幻读(select 操作得到的结果所表征的数据状态无法支撑后续的业务操作)

隔离级别:读未提交(会造成脏读),读已提交(会造成不可重复读),可重复读(会造成幻读),串行化

事务实现原理

MVCC(多版本并发控制):当前读,快照读。可见性判断(创建快照这一刻还未提交的事务,创建快照之后创建的事务,这两都可见),Read View(快照读 活跃事务列表,列表中最小事务ID,列表中最大事务ID)

undo log(回滚日志):保证事务原子性,实现数据多版本,delete undo log(用于回滚,提交即清理),update undo log(用于回滚)

redolog:记录修改,用于异常恢复,循环写文件(Write Pos写入位置,Check Point刷盘位置,Check Point>Write Pos落盘),刷盘时机innodb_flush_log_at_trx_commit

InnoDB锁类型

锁粒度(行级锁,间隙锁,表级锁)

所有当前读要加排他锁,SELECT,FOR UPDATE,UPDATE,DELETE

行级锁:作用在索引上,聚簇索引&二级索引

间隙锁:解决可重复读模式下的幻读问题,GAP锁锁住的位置是两条记录之间的GAP

表级锁:lock tables,元数据锁DML

### MySQL基础理论与核心概念 #### 数据库管理系统概述 数据库管理系统(DBMS, Database Management System)是一种用于创建、管理、维护和操作数据库的应用程序软件。MySQL 是一种开源的关系型数据库管理系统,广泛应用于 Web 应用开发和其他数据密集型场景中[^1]。 #### 关系型数据库的核心概念 关系型数据库基于关系模型构建,其基本单位是表(Table),由行(Row/Record)和列(Column/Field)组成。以下是几个重要的核心概念: - **表(Table)**: 表是由行和列组成的二维结构,用来存储具体的数据记录。 - **字段(Field)**: 列的名称及其对应的属性定义,描述每条记录中的某个特定信息。 - **主键(Primary Key)**: 主键是用来唯一标识表中每一行记录的一个或多个字段组合。它具有不可重复性和非空性特点。 - **外键(Foreign Key)**: 外键是一个表中的字段,它的值必须匹配另一个表中某一行的主键值,从而实现两个表之间的关联约束。 #### SQL语言简介 SQL (Structured Query Language) 是访问和处理关系型数据库的标准编程语言。主要功能包括查询、更新、删除以及管理和控制权限等操作。常见的 SQL 语句有 SELECT、INSERT、UPDATE 和 DELETE 等。 ```sql -- 创建一个简单的表格例子 CREATE TABLE employees ( id INT PRIMARY KEY, name VARCHAR(50), position VARCHAR(30), salary DECIMAL(8,2) ); ``` #### 安装与启动服务 为了能够正常使用 MySQL,在安装完成后需要通过命令行以管理员身份执行相应指令来开启或者停止服务: - 启动 MySQL:`net start mysql` - 暂停 MySQL:`net stop mysql` 此外还需要掌握如何连接到本地实例并进行初步配置设置如密码修改等等。 #### 性能优化技巧 对于大规模应用来说性能调优至关重要。可以从以下几个方面入手考虑改进措施:索引设计合理化;减少不必要的联接运算次数;避免全表扫描现象发生;定期分析统计信息保持最新状态以便于查询计划器做出更佳决策等方面着手提升效率。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值