主要介绍数据库基础概念,优点,四个特性以及规划与优化的相关内容,包括容量规划、性能规划、数据库设计和查询优化、视图,存储过程,导入导出等。
MySQL是什么呢?是一种流行的开源关系型数据库管理系统(RDBMS),它支持多个操作系统,使用SQL语言进行操作,可以用于存储和管理各种类型的数据,包括文本、图像、音频和视频等。
ACID是指数据库事务应该具有的四个特性,它们是:
原子性(Atomicity):一个事务中的所有操作要么全部成功完成,要么全部失败回滚。即使在发生故障的情况下,也不会留下部分完成的操作。
一致性(Consistency):事务开始之前和结束之后,数据库的完整性约束没有被破坏。这意味着事务应该确保数据库中的数据始终处于一致状态,即使在多个并发事务的情况下。
隔离性(Isolation):每个事务都应该被隔离开来,以避免并发事务之间的干扰。这可以通过使用锁定或其他机制来实现。
持久性(Durability):一旦事务提交,其结果就应该被永久保存。即使在系统崩溃或停电的情况下,也应该能够恢复已提交的事务。
1,容量规划
第一,优先考虑:原有数据量+数据增长率
第二,清楚预期硬盘容量 =(所有表字段大小+索引大小)* (原记录条数+预计增长条数)/(1-缓冲因子)
2,性能规划
A:考虑什么:业务需求+并发访问量
B:服务器要求怎么样的:高性能
C:引擎要求怎么样的:适应业务
D:有频繁操作的数据怎么办:放入内存
E:数据量大:分区分表,举例如下
create table sales(
id int,
product varchar(50),
sale_date
)
partition by range(year(sale_date)) (
partition p2020 values less then (2021),
partition p2021 values less then (2022),
..
);
2.1,服务器选择(类比选择汽车)
-引擎(类似汽车得CPU),要求要跑得快,且承受负载
-载重(内存)
-存储(类似汽车得存储空间)
-网络(类似汽车得速度+流畅度),速度快,带宽高
-厂商(类似选择汽车品牌),可靠
2.2,引擎选择
A:InnoDB:处理读写,可处理高并发,支持事务
B:MyISAM:处理读,不支持事务
C:Memory:临时存储
D:Archive:历史数据归档
E:CSV:数据交换
3,数据库设计
A:需求设计:从面向对象角度出发,找到有哪些对象,这些对象分别对应有哪些功能
B:概念设计:根据需求确定实体(名词),以及实体间关系/联系
C:逻辑设计:确定实体属性,确定主外键关系(根据关系)
D:物理设计:创表(要求包含字段,约束,主外键,索引)
3.1,字段类型
A:整数:int
B:小数:decimal(参数第一位表示存几位数,第二位表示存几位小数)
C:字符串:varchar(最大长度)-可变的,char