假设: 2 台 4 核 8G 的 mysql 云服务器,设置一读一写; 1 台 8 核 16G 的 mysql 云服务器,不读写分离; 如何选择比较好呢?请大神指点
1
yrj 2019-08-22 14:23:27 +08:00 via iPad
个人感觉,小站没必要,大站服务拆分是必要过程吧
|
2
okwork 2019-08-22 14:26:44 +08:00 via Android
读写比超过 80:20 就分开,不超过就不用分。
|
3
taogen 2019-08-22 15:03:11 +08:00 via Android
先搞清楚为什么要读写分离,它的作用是什么
|
4
qsbaq 2019-08-22 17:16:59 +08:00
读写分离没毛病,还能当同步备份。
看你需求而定。 |
5
opengps 2019-08-22 17:18:57 +08:00
根据业务特征决定:读写分离适用于读写比例明显偏大的场景。比如 v 站,访客多,但是每秒的新帖子和新回复峰值并不高
|
6
zjsxwc 2019-08-22 17:28:15 +08:00 via Android
数据库读写分离就是 sql 层面的缓存,是最后的大杀招
因为在应用层面,不管是用 aop 缓存方法调用结果,还是直接拦截代理接口请求缓存,都可以达到类似效果 |
7
CallMeReznov 2019-08-22 19:04:54 +08:00
分,一定要分.
|
8
s609926202 2019-08-22 19:14:14 +08:00 via iPhone
曾经信了邪,认为两台比一台好
|
9
az402 2019-08-22 19:20:58 +08:00 via Android
一台 8u16g 以后扩成两台 8u16g 的成本比两台 4u8g 升级成两台 8u16g 的成本低
|
10
dapang1221 2019-08-22 19:35:23 +08:00
首先这个配置就有问题,读写分离是两台机器上都有 mysql 实例,4c8g*2 性能未必比 8c16g*1 高…还得看索引大小,16g 的机器索引存的肯定更多,查询的 io 开销就小,楞拆成俩 8g 没法比
|
11
Actrace 2019-08-22 20:25:18 +08:00
单个服务器好。
通常来说数据库本身的缓存机制会处理好读的问题,所以读写分离一般是用于将负载分离到多台物理服务器上。 但是服务器越多,管理成本就越高,所以嘛,为此出现了很多中间件,就是为了解决这个问题。 在我个人看来,数据库的目标是存储和管理数据,因此如果是优化性能,我更建议是放到中间件层面去做,比如用 redis 进行缓存等。 然而大多数公司的业务还不到需要多台物理数据库服务器的程度吧,如果负载太高,请好好从程序层面找一下原因,大部分的问题都是使用不当造成的。 |
12
yukiir 2019-08-22 21:06:21 +08:00
我感觉单机好,单机不够了就上缓存,缓存不够了再上读写分离。
|
13
areless 2019-08-22 21:12:52 +08:00 via Android
那么你的数据库有 8g 或者 16g 大吗?什么~不够?加内存啊。来来来~shm 放数据,硬盘跑 http 响应,人要学会另辟蹊径
|
14
Aresxue 2019-08-26 15:43:34 +08:00
一般情况下当前肯定是单机的快,不过考虑到后续用户量的攀升先做好读写分离也是不错的。
ps:but 大多数系统根本不会有数据量超过系统负荷的那一天,过早优化是万恶之源。 |