Хотя это и составляет сверхзадачу для простых приложений, важно знать, что метод prepare() в некоторых ситуациях может обеспечить существенный выигрыш в производительности. Многие сценарии заключаются в подготовке одного единственного запроса (например, запроса INSERT) и последующем его многократном выполнении с различными значениями, что необходимо и тогда, когда один и тот же запрос выполняется без каких-либо изменений. Например, предположим, что необходимо добавить некоторые данные в базу данных. Оператор INSERT может оставаться по форме одним и тем же, и значения данных при этом изменяются. В таком случае методы prepare() и execute() можно использовать с маркерами DBI-интерфейса, как показано в следующем примере. Это позволит уменьшить нагрузку и повысить производительность приложения.
Листинг 20.14.
#!/usr/bin/perl
# загрузить модуль use DBI();
# соединить
my $dbh = DBI->connect{"DBI:mysql:database=somedb;host=localhost", "user", "pass");
# выполнить запрос
$sth = $dbh->prepare("INSERT INTO books (title, author) VALUES
(?,?)");
# прочитать данные из файла
open (FILE, "data. txt") or die (" Невозможно открыть файл"); @lines = <FILE>; close (FILE);
# просмотр исходных данных
# разбиение на составляющие части
# замена маркеров в операторе foreach $line (@lines)
{
my ($title, $author) = split (",", $line); chomp ($title); chomp ($author);
$sth->execute{$title, $author) or die ($dbh->errstr);
}
# очистить
$sth->finish();
$dbh->disconnect();
Знаки вопроса в операторе prepare() - это и есть маркеры, и они обрабатываются аналогично переменным. Знаки вопросов проставляются в местах, где позднее будут помещены значения данных. Сами данные подставляются в последующем операторе exe-cute(). Обычно оператор execute() размещается в цикле, при этом новые значения переменных подставляются при каждой итерации, как это сделано в предыдущем примере исходного текста (который считывает их из текстового файла). Значения переменных, заданные в методе execute(), называются связанными значениями, а процесс установления соответствия между связанными значениями и маркерами, называется связыванием.
Дополнительные функции, имеющие отношение к выполнению запросов, перечислены в табл. 20.2.
Реальная жизнь вносит свои коррективы...
Следует сказать, что предыдущий пример более иллюстративный, чем практический. В реальной ситуации при необходимости добавления данных из файла в таблицу, быстрее и эффективнее сработает оператор LOAD DATA INFILE, имеющийся в арсенале MySQL. Но данный пример лучше показывает работу маркеров.
Однако сценарий Perl может пригодиться, когда выбираемые данные должны быть обработаны с помощью регулярных выражений перед их вставкой в базу данных (это обычно необходимо при выборке данных из устаревших баз данных/приложений). В таких ситуациях просмотр в цикле содержимого файла с использованием маркеров представляет собой очень удобный метод. Более подробная информация об операторе LOAD DATA INFILE находится в главе 8, "Обработка баз данных и таблиц".
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
Все о MySQL. Использование маркеров DBI-интерфейса
28-12-2009
<< Предыдущая статья | Следующая статья >> |
Все о MySQL. Выполнение запросов | Все о MySQL. Обработка результирующего набора |