Я должен поместить соединение с БД / инициализация за пределами цикла FCGI для использования в своих интересах FastCGI в Perl?

Вы не можете индексировать в такие поля массива с помощью Firestore. Вы можете добавлять или удалять элементы поля типа списка по значению, используя arrayUnion и arrayRemove, но вы не можете указать, где этот элемент находится в массиве. Если вам нужен больший контроль над порядком элементов в массиве, вам сначала нужно прочитать документ, изменить массив в памяти, а затем обновить это поле обратно в документ.

6
задан 15 October 2008 в 23:24
поделиться

4 ответа

bmdhacks является правильным, что при использовании MySQL или PostgreSQL, он не имеет значения так же, так как соединения являются довольно дешевыми. Но неважно Ваша база данных у Вас будут выигрыши в быстродействии при помощи постоянных соединений.

Но если Вы действительно решите пойти с постоянными соединениями, то необходимо будет волноваться о тайм-аутах соединения. Они произойдут в любое время во время срока действия Вашей программы в зависимости от Ваших настроек сервера и объема трафика, который Вы получаете. ping() Ваш друг здесь. И если Вы нуждаетесь в большем количестве помощи, посмотрите на как Apache::DBI он.

3
ответ дан 17 December 2019 в 00:16
поделиться

Вы все еще получили бы от FCGI, даже если бы Вы действительно держите свое соединение с БД в курсе - но Вы получили бы еще больше, если бы Вы выгнали его с квартиры.

1
ответ дан 17 December 2019 в 00:16
поделиться

Не помещайте соединение вне цикла, Вы могли бы потерять соединение, и затем Вы не можете соединиться снова. Вы могли поместить его в глобальное, но затем Вы должны будете сделать проверку соединения и воссоединяете себя.

Вместо этого используйте Ima:: DBI или DBI->connect_cached() сделать соединение, кэширующееся для Вас. Это сделает всю работу, чтобы удостовериться, что соединение живо, и снова соединитесь при необходимости.

Но перед беспокойством сделайте некоторое сравнительное тестирование для обнаружения, где узкое место действительно. У меня было соединение с базой данных быть узким местом в прошлом, но это было с Oracle, и это было также 10 + несколько лет назад.

2
ответ дан 17 December 2019 в 00:16
поделиться

Производительность подключения в основном зависит от базы данных, которую Вы используете. PostgreSQL и MySQL очень быстры, чтобы соединиться (MySQL особенно) и таким образом обычно соединяться по каждому запросу. Другие базы данных, такие как Oracle немного медленнее и имеют тенденцию требовать более длительного времени жизни соединения. Должно быть легко протестировать путем записи некоторое время 1.. 100 000 циклов с DBI-> подключение () и разъединение, чтобы видеть, как быстро Ваша база данных.

1
ответ дан 17 December 2019 в 00:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: