我有一个特定的PHP页面,由于各种原因,需要将〜200个字段保存到数据库中.这些是200个单独的插入和/或更新语句.现在显而易见的事情是减少这个数字但是,就像我说的那样,由于我不打算进入的原因我不能这样做.
我没想到会遇到这个问题.在MySQL中选择似乎合理的性能但是插入/更新不是(执行此更新需要大约15-20秒,这自然是不可接受的).我编写了Java/Oracle系统,可以同时快乐地进行数千次插入/更新(在两种情况下都运行本地数据库; MySQL 5与OracleXE).
现在,在Java或.Net之类的东西中,我可以轻松地执行以下操作之一:
最小的解决方案是拥有一个我可以简单更新的缓存,它将在它自己的时间内单独地升级和升级数据库(即它将在更新内存缓存后立即返回).这可以是全局缓存或会话缓存(尽管全局共享缓存在其他方面具有吸引力).
解决这类问题的其他方法是什么?
您应该能够相对较快地执行 200 次插入,但这取决于很多因素。如果您使用事务引擎并在自己的事务中执行每个引擎,请不要这样做 - 这会产生太多的 I/O。
如果您使用非事务性引擎,那就有点棘手了。使用单个多行插入可能会更好,因为 MySQL 的刷新策略意味着它不需要在每行之后刷新其更改。
您确实希望能够在生产规格的开发盒上重现这一情况,并准确分析其发生的原因。停下来应该不难。
当然,另一种可能性是,由于极大大小的表或大量索引,您的插入速度很慢 - 在这种情况下,您应该适当地扩展数据库服务器。将大量行插入到索引不适合 RAM 的表中(或者 RAM 没有正确配置为用于缓存这些索引)通常会变得非常糟糕。
但是,当有一种方法可以轻松地改变应用程序并保持当前算法时,不要试图寻找一种使应用程序复杂化的方法。
| 归档时间: |
|
| 查看次数: |
9623 次 |
| 最近记录: |