database - 为什么复制数据库的压力较小?
问题描述
如果可以就数据库复制进行高级对话,那就是我正在寻找的。
想象一下,我有一个复制的只读数据库,旨在将其用于报告。好处是用户不会为报告数据而敲击主数据库,这些查询被卸载到辅助数据库。但是,如果我设置了实时交付,那么现在辅助数据库正在从主数据库获取读取请求以及更新语句。您的复制数据库不会容易发生故障,就像您将一个数据库用于事务和报告功能一样吗?
换句话说,与读写事务数据库会遇到的常见 CRUD 操作相比,任何实时复制方法(我只熟悉日志传送)的性能优势是什么?
解决方案
A没有复制你有:
- 在主服务器上,您拥有:
- 选择语句,
- DML 语句,
- 报告报表。
如果您创建复制,则:
在小学你有:
- 选择语句,
- DML 语句。
在复制品上,您有:
- DML 语句,
- 报告报表。
您没有从源上的 SELECT 语句生成的负载。所有基于日志的复制系统都不会将 SELECT 语句复制到复制系统。它们不会更改数据,并且在数据库日志中没有它们的踪迹。
更高级的复制系统也不会复制已回滚的 DML 语句(以 ROLLBACK 语句结束)。只有提交的语句被复制(以 COMMIT 语句结束)。
推荐阅读
- swift - 如何过滤相等的字符串并只获取每个字符串
- php - 用户登录后从数据库中显示合适的网页信息
- python-3.x - 'ValueError: int() base must be >= 2 and <= 36, or 0' 为什么?
- android - 加载数据时如何使文本视图模糊
- flutter - 在 Flutter 应用程序中为每个屏幕设置不同的方向会导致大量延迟
- python - 如何四舍五入到特定的预定义数字?
- spi - 将 ESP32(Lolin32 Lite 开发板)连接到 7 针 SPI TFT 显示器 ST7789 驱动程序
- html - 如何在点击时更改 MaterialTable 单元格内容?
- angular - Angular 6 多层次的 RoutingModule
- python-2.7 - 如何使用 if 语句返回 Python 中的先前代码?