什么是数据库的读写分离?什么是主表从表,主库从库?你真的理解吗?

本文介绍了数据库优化中的读写分离技术,详细阐述了其应用场景和适用条件。同时,讨论了分表和分库的概念,包括水平拆分和垂直拆分的策略。此外,分析了何时应考虑分库分表,并提出了合理的实施时机。最后,探讨了分库分表的决策因素和未来业务增长的考量。
摘要由CSDN通过智能技术生成

1.什么是读写分离?

读写分离就是将数据库分为主数据库和从数据库,主数据库是用来进行数据库的写操作.多个从数据库用来进行数据库的读操作,主数据库将写入的数据通过一些机制,实时的同步到从数据库比如Binlog等

2.读写分离的应用场景

大多数互联网公司的业务场景往往都是读多写少,当访问量变大的时候数据库的查询就会成为一个瓶颈,这时候线性的提升数据库的查询性能的话去消除读写锁的冲突从而去提升数据库的写性能那么就可以考虑使用读写分离的架构

3.什么时候用读写分离?

并不是所有的查询性能的瓶颈都需要读写分离,如果是因为并发压力的话我们可以考虑使用数据分片,缓存,加入搜索引擎等.

4.什么是分表?

在数据库数量不变的情况下对数据库里的表进行拆分

5.什么是分库?

分库指的是在表数量不变的情况下对数据库进行拆分

6.水平拆分

水平拆分是在一张表数据不变的情况下,把一张表的数据拆分成两张表,因为当表的数据量越来越大时这张表的查询和写的性能就会变差,提高他的性能.

7垂直拆分(常用)

垂直拆分值的是将本来放到一个表的字段拆分为多个字段,这种场景主要是某个字段的值会越来越多影响其他表数据的查询,拆分出来的表字段通过存储原来表的id关联

8.为什么要分库分表?

mysql服务的硬件资源是有限的,随着我们业务的不断发展,我们的数据量也会越来越多,数据库的压力越来越大,就需要我们对数据库进行优化,在业务的初期我们使用一些增加索引,但是当这些优化的手段越来越小就进行一个分库分表(最终优化手段)

9.什么时候分库分表?

表瓶颈:单表字段比较多,数据量比较大,导致读写性能比较慢

数据库瓶颈:cpu压力过大,内存不足,磁盘不足,带宽不足

10.如何选择分库分表?

分库分表的代价比较大,不要频繁进行分布分表,在分库分表的时候我们也要合理判断,至少支持未来三到五年的业务增长

要实现Mycat中间件的读写分离一主两从,需要按照以下步骤进行配置: 1. 在你的Mycat配置文件中,找到并编辑`server.xml`文件。你可以参考之前提到的文章《CentOS下安装和使用Mycat实现分布式数据库》中的配置方法。确保你已经正确配置了Mycat的主节点和两个从节点。 2. 在`server.xml`文件中,找到`<dataHost>`标签,并按照以下格式添加两个从节点的配置信息。例如: ```xml <dataHost name="node2" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native"> <heartbeat>select user()</heartbeat> <writeHost host="node1" url="192.168.0.1:3306" user="root" password="root"/> <readHost host="node2" url="192.168.0.2:3306" user="root" password="root"/> </dataHost> <dataHost name="node3" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native"> <heartbeat>select user()</heartbeat> <writeHost host="node1" url="192.168.0.1:3306" user="root" password="root"/> <readHost host="node3" url="192.168.0.3:3306" user="root" password="root"/> </dataHost> ``` 这里的`node2`和`node3`是从节点的名称,`192.168.0.1`是主节点的IP地址和端口号,`192.168.0.2`和`192.168.0.3`分别是两个从节点的IP地址和端口号。请根据你的实际情况进行修改。 3. 在`server.xml`文件中,找到`<schema>`标签,添加以下配置信息来指定读写分离规则: ```xml <schema name="testdb" checkSQLschema="false" sqlMaxLimit="100"> <table name="user" primaryKey="id" dataNode="node1,node2,node3" rule="mod-long" /> </schema> ``` 这里的`testdb`是数据库的名称,`user`是表的名称,`node1,node2,node3`是数据节点的名称,`rule="mod-long"`表示使用取模的方式进行读写分离。请根据你的实际情况进行修改。 4. 保存并关闭`server.xml`文件。 5. 重启Mycat服务。 这样,你就成功配置了Mycat中间件的读写分离,其中包括一个主节点和两个从节点。当有读操作时,Mycat会自动将读请求分发给从节点进行处理,实现了读写分离的效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Mycat中间件实现一主一从和双主双从的读写分离](https://blog.csdn.net/qq_33200967/article/details/80948708)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Mycat搭建读写分离(一主一从、双主双从)](https://blog.csdn.net/qq_41779565/article/details/125375231)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值