1.什么是读写分离?
读写分离就是将数据库分为主数据库和从数据库,主数据库是用来进行数据库的写操作.多个从数据库用来进行数据库的读操作,主数据库将写入的数据通过一些机制,实时的同步到从数据库比如Binlog等
2.读写分离的应用场景
大多数互联网公司的业务场景往往都是读多写少,当访问量变大的时候数据库的查询就会成为一个瓶颈,这时候线性的提升数据库的查询性能的话去消除读写锁的冲突从而去提升数据库的写性能那么就可以考虑使用读写分离的架构
3.什么时候用读写分离?
并不是所有的查询性能的瓶颈都需要读写分离,如果是因为并发压力的话我们可以考虑使用数据分片,缓存,加入搜索引擎等.
4.什么是分表?
在数据库数量不变的情况下对数据库里的表进行拆分
5.什么是分库?
分库指的是在表数量不变的情况下对数据库进行拆分
6.水平拆分
水平拆分是在一张表数据不变的情况下,把一张表的数据拆分成两张表,因为当表的数据量越来越大时这张表的查询和写的性能就会变差,提高他的性能.
7垂直拆分(常用)
垂直拆分值的是将本来放到一个表的字段拆分为多个字段,这种场景主要是某个字段的值会越来越多影响其他表数据的查询,拆分出来的表字段通过存储原来表的id关联
8.为什么要分库分表?
mysql服务的硬件资源是有限的,随着我们业务的不断发展,我们的数据量也会越来越多,数据库的压力越来越大,就需要我们对数据库进行优化,在业务的初期我们使用一些增加索引,但是当这些优化的手段越来越小就进行一个分库分表(最终优化手段)
9.什么时候分库分表?
表瓶颈:单表字段比较多,数据量比较大,导致读写性能比较慢
数据库瓶颈:cpu压力过大,内存不足,磁盘不足,带宽不足
10.如何选择分库分表?
分库分表的代价比较大,不要频繁进行分布分表,在分库分表的时候我们也要合理判断,至少支持未来三到五年的业务增长