学习文档
自己整理:数据库调优
SQL server和MySql简单对比
SQL server
- Windows首选,跨平台性不好
- 重量级
- 功能丰富,性能略优
- 不开源
MySql
- Linux首选,跨平台性好
- 轻量级
- 功能少一点,性能略差
- 开源
数据库设计
表
主键
主键必须是唯一的,且要依赖索引,可以是聚集索引或者非聚集索引
索引
聚集索引
聚集索引基于聚集索引键按顺序排序和存储表或视图中的数据行。 聚集索引按 B 树索引结构实现,B 树索引结构支持基于聚集索引键值对行进行快速检索。
一个表只能有一个聚集索引
参考:B树、B+树详解
非聚集索引
非聚集索引中的每个索引行都包含非聚集键值和行定位符。 此定位符指向聚集索引或堆中包含该键值的数据行。 索引中的行按索引键值的顺序存储,但是不保证数据行按任何特定顺序存储,除非对表创建聚集索引。
堆(没有聚集索引的表)
分区表、分表、分库
参考:
阿里P8架构师谈:数据库分库分表、读写分离的原理实现,使用场景
分区表
参考:
概念:分区表是将大表的数据分成称为分区的许多小的子集,类型有FAT16,FAT32,NTFS,exFAT,Ext2/3/4,HFS+,VMFS。另外,分区表的种类划分主要有:range(范围)、list(列表)和hash(散列)分区。划分依据主要是根据其表内部属性。同时,分区表可以创建其独特的分区索引。倘若硬盘丢失了分区表,数据就无法按顺序读取和写入,导致无法操作。
适合场景:
- 单张表数据达到千万级别的时候考虑分区表,一般按年或者按月分
- 历史数据不常用,一般只用最近日期数据的表,例如与时间有关的表:打卡记录表、日志、消费记录等
分表
适合场景:
- 大数据量且访问频繁的表
分库
Transact-SQL (T-SQL)
查询
分页
参考:
事务
参考:
锁
安全性
架构 SCHEMA
可以自定义架构,预定义的架构有:
- dbo:最常见,表、视图、存储过程、函数等,默认都是使用dbo架构
- sys
- guest
- INFORMATION_SCHEMA