【发布时间】:2015-09-19 10:47:32
【问题描述】:
我正在使用一个 perl 脚本,它在接收到参数后,会检查数据库上的一个值,然后相应地执行其他操作。由于流量在增加,正在执行大量 mysql 读/写操作,可能会影响性能。
由于存储在 mysql 中的数据并不复杂,我想知道在内存中存储一个数组是否更好,然后其他 perl 实例在运行时可以读取/修改该数组。
这可能吗?
【问题讨论】:
-
perldoc.perl.org/perlipc.html 或者 Redis(通过 unix 套接字)。
-
请记住,数据库也有自己的缓存来优化磁盘 IO。如果您经常读取相同的行,则 dbase 可能已经将它们保存在 RAM 中。您需要配置 mysql 进行检查。它还支持临时表。
-
"mysql reads/writes ...可能会影响性能"您不应该猜测哪里可能存在瓶颈。您应该使用来自 CPAN 的 Perl 的优秀分析器之一来定位真正的问题,并在该领域工作以加快处理速度。也就是说,假设你的应用程序真的运行得太慢了?
-
像 Redis 这样的键/值存储听起来是个好主意。您还可以让 Perl 应用程序不是具有单个调用的脚本,而是作为守护程序运行。然后你可以在内存中有查找表。如果它是一个网络应用程序,请考虑 Plack 和朋友,比如 Dancer2。如果没有,有办法守护东西。