一、什么是分区、分表、分库
分区
就是把一张表的数据分成N个区块,在逻辑上看最终只是一张表,但底层是由N个物理区块组成的
分表
就是把一张表按一定的规则分解成N个具有独立存储空间的实体表。系统读写时需要根据定义好的规则得到对应的字表明,然后操作它。
分库
一旦分表,一个库中的表会越来越多
将整个数据库比作图书馆,一张表就是一本书。当要在一本书中查找某项内容时,如果不分章节,查找的效率将会下降。而同理,在数据库中就是分区。
二、常用的单机数据库的瓶颈
问题描述
单个表数据量越大,读写锁,插入操作重新建立索引效率越低。
单个库数据量太大(一个数据库数据量到就是极限)
单个数据库服务器压力过大
读写速度遇到瓶颈(并发量几百)
三、分区
什么时候考虑使用分区?
一张表的查询速度已经慢到影响使用的时候。
sql经过优化
数据量大
表中的数据是分段的
对数据的操作往往只涉及一部分数据,而不是所有的数据
分区解决的问题
主要可以提升查询效率
分区的实现方式(简单)
mysql5 开始支持分区功能
四、分表
什么时候考虑分表?
一张表的查询速度已经慢到影响使用的时候。
sql经过优化
数据量大
当频繁插入或者联合查询时,速度变慢
分表解决的问题
分表后,单表的并发能力提高了,磁盘I/O性能也提高了,写操作效率提高了
查询一次的时间短了
数据分布在不同的文件,磁盘I/O性能提高
读写锁影响的数据量变小
插入数据库需要重新建立索引的数据减少
分表的实现方式(复杂)
需要业务系统配合迁移升级,工作量较大
分区和分表的区别与联系
分区和分表的目的都是减少数据库的负担,提高表的增删改查效率。
分区只是一张表中的数据的存储位置发生改变,分表是将一张表分成多张表。
当访问量大,且表数据比较大时,两种方式可以互相配合使用。
当访问量不大,但表数据比较多时,可以只进行分区。
常见分区分表的规则策略(类似)
Range(范围)
Hash(哈希)
按照时间拆分
Hash之后按照分表个数取模
在认证库中保存数据库配置,就是建立一个DB,这个DB单独保存user_id到DB的映射关系
1、右键点击我的电脑,然后选择“管理”,再点击“磁盘管理”。
2、然后选择需要进行分区的磁盘,点击右键,选择“压缩卷”。
3、之后系统会自动查询压缩空间。
4、接下来要选择需要压缩空间的大小,点击压缩。
5、此时出现一个“可用空间”,即刚才压缩出来的空间。
6、点击右键,选择“新建简单卷”。
7、选择“下一步”。
8、输入自己想要的大小,点击“下一步”。
9、选择“盘符”,单击“下一步”。
10、选择新建的简单卷的磁盘格式,点击“下一步”。
11、点击“完成”就ok啦。
服务器如果做了raid1 没必要再特别分区数据最关键,分区不能挽救数据
就算你mysql,serve-u转载非系统盘,只要系统盘(c盘)比如中病毒,无法启动等等。存在mysql数据库里头的文件一样弄不出来。用计划任务备份mysql工具备份数据才是好方法
建议你分两个区,C盘大一点,D盘放点安装源文件什么的
经常备份mysql数据,再做个全硬盘ghost,就算系统坏了,ghost一下硬盘,导入mysql数据就能把数据损失降到最低
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)