Модули Perl: MySQL против DBI

0

Многие наши автоматизированные процессы используют 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.

  • 0
    DBI является де-факто модулем базы данных для Perl. Я не знаю ни о каких других модулях MySQL. Даже Oracle не говорит ни о каком другом модуле: dev.mysql.com/doc/refman/5.1/en/apis-perl.html
  • 0
    Не могли бы вы дать нам полные имена и URL-адреса именно тех модулей, на которые вы ссылаетесь?
Показать ещё 4 комментария
Теги:
performance
module
dbi

1 ответ

3
Лучший ответ

Я нашел MySQL модуль, на который он ссылается, был частью DBD:: mysql dist. Чтобы процитировать его

Как из Msql-Mysql-модулей 1.19_10 M (y) sqlPerl больше не является отдельным модуль. Вместо этого он эмулируется с использованием драйверов DBI. Вы сильно рекомендуется внедрять новый код с DBI напрямую.

Таким образом, уровень эмуляции является причиной потери вашей производительности. Также, что MySQL.pm был удален в строке 4.x DBD:: mysql, последний появился в 2006 году.

  • 0
    Ваша ссылка мертва. Я нашел search.cpan.org/~rudy/DBD-mysql-2.9008/lib/Mysql.pm
  • 0
    Я видел, что уже исправлено и добавляет еще несколько ссылок

Ещё вопросы

Сообщество Overcoder
Наверх
Меню