1. 为什么要分库分表 1.1 单机 MySQL 的瓶颈 单机 MySQL 在数据量和并发量达到一定规模后,会遇到以下瓶颈: 性能瓶颈: 单表数据量超过 2000 万行后,B+Tree 高度增加
1. 为什么需要分布式事务 1.1 问题场景 单机 InnoDB 事务能保证同一数据库内的 ACID。但在微服务架构下,一次下单操作可能跨越多个独立服务、独立数据库: 用户
1. 驱动与框架选择 1.1 生态全景 驱动层(必须): github.com/go-sql-driver/mysql 最主流,go-sql-driver github.com/pingcap/tidb/... TiDB 官方驱动(兼容 MySQL) 增强 SQL 库: github.com/jmoiron/sqlx database/sql 的薄封装,保留 SQL 控
1. 问题排查通用流程 告警/反馈 ↓ 1. 确认影响范围(哪个服务?什么操作?多少用户?) ↓ 2. 查看监控(QPS、延迟、连接数、CPU/内存/磁盘 I/O)
1. 配置文件结构 1.1 配置文件位置 # MySQL 按以下顺序读取配置文件 /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf # 查看 MySQL 读取了哪些配置文件 mysql --verbose --help | grep "Default options" -A 1 # Docker 中挂载配置 docker run ... -v /host/my.cnf:/etc/mysql/conf.d/custom.cnf mysql:8.0 1.2 配置文
1. 高可用架构概览 方案对比: 单机 → 无 HA,测试/开发用 主从复制 → 读写分离,异步,主库故障需手动切换 主从 + MHA → 自动故障转移,秒级切换 MGR(组复
1. 优化工作流 慢查询 → 找到 SQL → EXPLAIN 分析 → 找出瓶颈 → 针对性优化 → 验证 发现慢 SQL 的途径: 1. 慢查询日志(long_query_time = 1) 2. performance_schema.events_statements_summary_by_digest 3. show pr
1. 日志系统全景 日志分类: InnoDB 特有: Redo Log ── 物理日志,持久性(D),WAL Undo Log ── 逻辑日志,原子性(A)+ MVCC(I) MySQL Server 层: Binlog ── 逻辑日志,
1. 锁的分类 MySQL 锁体系: 按粒度: 全局锁(FTWRL) 表级锁 ├── MDL(元数据锁) ├── 表锁(LOCK TABLES) └── 意向锁(IS/IX,I
1. ACID 原理 1.1 Atomicity(原子性) 定义:事务中的所有操作,要么全部成功,要么全部回滚,不存在中间状态。 实现:Undo Log Undo Log 记录了数据修改
1. 为什么需要索引 假设 users 表有 1000 万行数据: -- 无索引:全表扫描,扫描 1000 万行 SELECT * FROM users WHERE email = 'alice@example.com'; -- 有索引:B+Tree 查找,约 log₂(10000000
1. 整数类型 1.1 类型一览 类型 字节 有符号范围 无符号范围(UNSIGNED) TINYINT 1 -128 ~ 127 0 ~ 255 SMALLINT 2 -32768 ~ 32767 0 ~ 65535 MEDIUMINT 3 -8388608 ~ 8388607 0 ~ 16777215 INT 4 -2147483648 ~ 2147483647 0 ~ 4294967295 BIGINT 8 -2
1. DDL 数据定义语言 1.1 数据库 -- 创建 CREATE DATABASE IF NOT EXISTS myapp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 修改字符集 ALTER DATABASE myapp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 删除 DROP DATABASE IF EXISTS myapp; -- 查看建库语句 SHOW CREATE DATABASE myapp; 1.2 表操作 -- 创建表 CREATE TABLE IF
1. 整体架构概览 ┌──────────────────────────────────────────────────────────────
1. MySQL 简介与版本演进 MySQL 是世界上最流行的开源关系型数据库,由瑞典 MySQL AB 公司开发,后被 Sun 收购,最终归入 Oracle 旗下。社区维护的分支 MariaDB 由 MySQL 创始人 Monty Widenius 主导,兼
1. 📖 PostgreSQL简介 1.1 什么是PostgreSQL? PostgreSQL(简称Postgres)是一个功能强大的开源对象关系型数据库管
1. 📖 概述 本章将详细介绍PostgreSQL的数据库基础操作,包括创建、删除、修改数据库,以及与MySQL的对比。 2. 🗄️ 数据库操作 2.1 查看所有数
1. 📖 概述 PostgreSQL拥有非常丰富的数据类型系统,远超MySQL。本章将详细介绍PostgreSQL的各种数据类型,并与MySQL进行
1. 📖 概述 本章介绍PostgreSQL中表的创建、修改和管理,并与MySQL进行详细对比。 2. 🏗️ 创建表 2.1 基本语法 -- PostgreSQL CREATE TABLE users ( id SERIAL PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE,
1. 📖 概述 约束和索引是保证数据完整性和查询性能的关键。本章详细介绍PostgreSQL的各种约束类型和索引策略。 2. 🔒 约束(Constraint