我们先了解一下大概的数据量:
复杂的数据库语句:Mysql每秒大概可以执行100-200个
一台服务器就可以做到每秒几十个并发(配置:4核8G)
一万块钱的服务器的配置:16核32g内存+4T硬盘
如果是微型的服务,我们是不需要其他操作的,但是如果我们公司想开发一个大型的项目,那么将所有的内容都部署到一台服务器上是不太现实的,这个时候就需要虚拟化组件将这些服务器统一组织起来。
虚拟化:很多台变为一台 一台变为很多台
通常情况下,一般会将多台服务器合并之后,再进行分割,这个再次分割的大小通常为4核8g。
为什么4核8g:我们的项目是使用Java语言的,对于jvm来说需要定时的进行垃圾回收,垃圾回收时会产生卡顿。如果空间过大,一次垃圾回收会特别的慢,空间小的话,触发频繁,回收快一些。
对于单台服务器:
条件:每秒几百次访问
每秒访问的次数不是一定的,存在流量高峰时段,每秒访问次数可达几百万,那么每天可以几十到几百万次访问。
这意味着数据库存储量很大,前端浏览器加载页面也需要下载,大量访问会产生带宽不足,所以为了解决这个问题,采取了前后端分离。
长久的使用,一个表中的数据量很多,最先出现的问题是,我们进行磁盘io读取数据库数据时,需要几秒的时间,此时我们虽然仍可以使用该表,但是读取时间过长,所以我们此时挑出一列作为索引文件,列以及地址形成b树。
这样读取的速度变快了,但是数据量过大时,索引文件也能达到几百兆,这样也有可能送不过去,所以我们仍然需要限制数据量,在五百万条左右,所以我们需要对数据库分表。
此时数据库暂时解决了,但是如果只有一台服务器,负担五十个表,也是非常困难的,所以我们可以将这五十个表分到不同的服务器上,这就是分库分表思想。