1:如果多个线程对单张表读取,跟单个线程对单标读取效率会差不多嘛,
因为读数据库是没加锁的,如果有区别,是因为哪方面呢,io还是网络还是cpu还是硬盘。
2: 读写分离 分1主1备,1主多备,想问下,多备是为了解决什么问题呢?
在mysql-server层面来讲,是区分不了题主的场景的。
数据复制,有了冗余。但是取代不了备份。
可以配合读写分离,分担主库压力。
可用性,是分布式系统的核心问题。多备,为后面的高可用方案提供了基础。不如MMM,MHA。都是建立在复制基础上的。
读写分离中,备是做为读取数据使用的,多备是为了分解读库压力
第一个问题:
1.多个线程对同一张表读取不会产生锁定数据的问题
2.多线程对同一个表进行读取混合写入会产生数据锁定,主要是写入会锁定数据
第二个问题:
1.如果数据库没有从数据库的话,遭遇意外事件,例如数据库物理删除、硬盘损坏等,这是灾难性的后果
2.数据库主要的瓶颈是I/O问题,一般的数据库都是写操作少,读操作多。一主多备能有效破解I/O瓶颈问题
第一个问题:
多个线程和单个线程对单张表读取需要讨论一些前提条件:
读取操作对应的语句是否一样(涉及缓存命中和执行效率),语句中是否有强制锁定行数据的hint等等。
如果什么都一样,应该是没什么区别的。
第二个问题:
一主多从是最为简单的复制结构之一,通常用于大量读、少量写的场景中。
备库不仅可以分担主库的读取压力,还可以用于灾难恢复、作为主库的预备库、作为主库的备份库、作为测试开发库等。