我正在为运行在 Amazon RDS 上的 MySQL 数据库驱动的应用程序升级/选择资源。我正在考虑引入只读副本和其他一些策略来提高日益繁重的负载下的可用性。(这是书中最古老的故事。)因此,我一直在监控我的数据库服务器,并试图了解瓶颈在哪里等,但我得到了一些非常矛盾的信息,关于读/写比率是:
首先,我要说的是,与许多其他类型的应用程序相比,我的应用程序编写工作量相对较大。我知道这一点。
使用 AWS RSD 控制面板中的云监控,我通常会看到以下指标:
读操作与写操作的比率:1:20(每 20 次写入进行 1 次读取)
吞吐量和延迟的读写比率通常与该比率一致。
我觉得这太荒谬了。我无法想象我的应用程序的写入次数为什么比读取次数多得多。
因此,我开始寻求第二种意见,即使用 MySQL Work Bench Administration Dashboard 实时监控我的数据库。在那里,证据有所不同。我平均看到以下内容:
从读取查询执行到写入查询执行:6:1(每执行 1 个写入查询就会执行 6 个读取查询)
要么是这些监测工具非常不准确,要么是我对数据存在根本性的误解。
关于问题:
为什么这两种工具会显示出如此不同的结果?
有没有更好的方法可以让我准确确定数据库的有效读/写比率,以便我做出审慎的扩展决策?
答案1
读/写运营!= 读/写查询。
一个“写入”查询可能会导致多个磁盘 IO 写入操作,具体取决于查询的性质、您使用的引擎、您拥有的索引等。