本文主要是介绍单机数据库策略,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
单机
单机时代考虑2个问题:速度,存储空间
表格设计的策略:
早期硬盘成本高,速度响应要求不高,尽可能的牺牲时间,减少空间的占用
使用三范式。
- 第一范式:数据库表格字段不可切分(关系型数据库自然支持)
姓名 | 电话 |
---|---|
王翠花 | 66666668,17760769456 |
将电话继续拆分:为两个字段固话,手机
- 第二范式:所有的非主键字段必须依赖全部的主键字段(复合主键:多个字段实现主键的功能)
stu 学生 sub表示科目
sub_name 只依赖sub_id 而不依赖stu_id,因此需要拆分
- 第三范式:非主键字段必须 依赖主键字段不能依赖其他非主键字段
apart 学系
-
appart_name 不依赖stu_id,而依赖非主键字段apart_id
总结
如果满足三范式,就不可能出现冗余字段,导致整体数据占用空间变小,但是表格拆分的过多,关联关系复杂,
查询时效率变低–牺牲了时间.节省了空间。
违反了三范式设计可以实现–牺牲空间,节省时间–反范式
集群
无论如何设计表格结构,物理瓶颈总是限制单个服务器,单个硬盘的读写效率200M/s,无论如何设计表格结构,物理瓶颈总是限制单个服务器,单个硬盘的读写效率 200M/S,在想多,单机无法处理,需要分布式集群的引入
数据库集群
主从复制
主节点master:
开启一个二进制日志文件log-bin 记录所有的写操作的日志信息,以position记录的操作指针位置
从节点slave:
I/O线程:登录主节点,监听二进制日志文件,通过position的值是否发生更新改变来判断是否需要抓取新的内容
中继日志rey-log:记录了I/O线程抓取的所有内容,以position来记录更新的位置
SQL线程:监听slave节点内部的中继日志,判断是否有更新的写操作需要执行.从而将I/O抓取的所有内容在从节点执行一遍,保持和主节点的同步
linux安装Percona的mysql
主从结构的配置
这篇关于单机数据库策略的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!