数据库 读写分离 为什么提高性能

09-04-12 vic732
请教 大家,数据库读写分离为什么能够提高性能,难道在数据库同步的时候,就不需要资源,不产生事务么?网上找资料 也没有解释原理的

[该贴被admin于2009-04-26 08:32修改过]

1
IceQi
2009-04-12 20:23
提高效率的唯一方式是使用缓冲,这是最根本的解决方法。

不太清楚你说的读写分离是指什么?

ACoder
2009-04-12 21:33
你看看数据库关于锁机制那一部分就明白了。

usejava
2009-04-20 13:23
是不是指单独复制一份数据到另外的报表服务器。报表服务器只做查询?

数据库提高读取效率的第一选择不是缓存,而是索引。但是维护索引有开销,会降低增删改性能。所以,为提高修改和读取性能所做的优化是冲突的,分开可以单独优化。

vic732
2009-04-21 00:07
这个问题 很困扰我,谁能解答一下

usejava
2009-04-21 09:22
到底想让大家解答什么,前面的回复不算解答吗?

fireflyc
2009-04-22 23:13
问题在文件系统上,数据库的读写最终要压在文件系统上的。而操作系统对文件块的操作是加锁的。所以假如在一个文件块上既有数据读取也有写入,那么就没有办法并发了。。所以就自然慢咯。。。

ACoder
2009-04-23 08:24
楼上的说法是错误的,所谓数据库操作系统的操作系统代表他可以取代文件系统进行文件的操作,通常情况下数据库是建立在裸设备上的,数据库的读写不通过操作系统。

usejava
2009-04-24 16:17
数据库直接建在裸设备上的不多吧,备份恢复太麻烦,而且性能提高有限

beepbug
2009-04-24 17:34
目前大多数数据库是不通过系统访问的。通过系统访问,确实效率极低。

大体上说,就是数据库系统向操作系统申请一块连续的硬盘空间建立一个大文件,然后在里面建立数据库。当记录增加到不能容纳时,就再建立一个文件。这个就是数据库的物理结构。而我们平时打交道的,叫数据库的逻辑结构。

[该贴被beepbug于2009-04-25 20:14修改过]

usejava
2009-04-26 22:55
通过操作系统申请空间建立文件,这怎么叫不通过系统访问。

裸设备是数据库自己管理硬盘,和操作系统无关,可是使用起来很麻烦。

beepbug
2009-04-27 07:21
你可以去看看如何访问一般文件,Oracle又是如何访问数据的。至于

>>>裸设备是数据库自己管理硬盘,和操作系统无关,可是使用起来很麻烦。

那是不行的。你至少得告诉系统,我占了这块一亩三分地。

Oracle实际上是自己在管理物理空间。但是,它必须告诉系统,我用了这块。

[该贴被beepbug于2009-04-27 07:37修改过]

usejava
2009-04-27 11:33
同意裸设备也要在系统中登记一下,但是操作系统不再负责其它管理,没有文件系统,没有数据缓存,这些都要应用程序自己来管理。所以裸设备不是通过操作系统建立文件。

因为不使用系统管理,没有文件系统,常用的备份工具都不能用,所以我说管理比较麻烦。

另外,直接基于磁盘,不太清楚是否还可以使用RAID,有哪位兄弟可以讲一下。

christophe01
2009-04-27 16:36
并发写会产生等待和资源锁,以及热点IO,写操作影响读这是大家不想看到的.最关键的是,读写不分离会导致数据库的一致性管理变的复杂.

ACoder
2009-04-28 10:16
对于数据库的备份难道你用COPY文件的方式??

数据库本身提供了镜像、在线备份、离线备份,增量备份、日志备份这些方式难道还不够你使用??备份可以直接备份到文件系统的,对于备份文件你可以正常的使用文件系统管理,也可以进行备带处理。

裸设备跟RAID无关,RAID是是纯硬件级别的。

猜你喜欢
2Go 1 2 下一页