【问题标题】:Perl modules: MySQL vs DBIPerl 模块:MySQL 与 DBI
【发布时间】:2011-03-26 01:41:35
【问题描述】:

我们的许多自动化流程都使用 perl,并且需要访问我们的 MySQL 数据库。我不想承认这一点,但直到最近,我们还没有真正对我们的大多数流程进行过多的基准测试。我们的一位开发人员使用以下伪代码设置了一个测试,以比较“使用 MySQL”与“使用 DBI”的性能:

for ($i = 1; $i <= 1000; $i++) {
  pull and store all records in a 4,000 record table
}

结果: MySQL - 57s、56s、57s DBI - 43s, 42s, 43s

出于某种原因,我很惊讶地看到 DBI 的表现要好得多;考虑到我对这两个模块知之甚少。我意识到运行的基准测试可能存在一些问题,并且每个人的设置/结果都会非常糟糕,但我很好奇其他人是否经历过使用 DBI 与 MySQL 模块的任何形式的性能提升。

【问题讨论】:

  • DBI 是 Perl 的事实上的数据库模块。我不知道任何其他 MySQL 模块。甚至 Oracle 也没有提及任何其他模块:dev.mysql.com/doc/refman/5.1/en/apis-perl.html
  • 您能否给我们您所指的确切模块的全名和 URL?
  • 我不完全确定如何找到有关它们的任何信息(例如 URL 等),但无论它们的路径是否值得:/usr/lib64/perl5/vendor_perl/5.8.8/ x86_64-linux-thread-multi/Mysql.pm 和 /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi/DBD/mysql.pm
  • 是的,我很困惑,尤其是考虑在 cpan 中搜索 mysql 会首先返回它的 DBI DBD。
  • 如果没有更多信息,该基准毫无意义。跑了多少?服务器负载? # 连接数?内存利用率百分比?

标签: mysql perl performance module dbi


【解决方案1】:

我找到了他所指的MySQL 模块,它是was 部分DBD::mysql 分布。引用它

从 Msql-Mysql-modules 1.19_10 开始 M(y)sqlPerl 不再是一个单独的 模块。相反,它被模拟使用 DBI 驱动程序。你很坚强 鼓励实施新代码 直接 DBI。

所以仿真层是性能损失的原因。还有MySQL.pm在DBD::mysql的4.x行中被删除了,它最后一次出现是在2006年。

【讨论】:

猜你喜欢
  • 2017-10-26
  • 2019-06-15
  • 1970-01-01
  • 2012-09-05
  • 2012-10-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-17
  • 2013-02-01
相关资源
最近更新 更多