150  /  175

Базы данных

Просмотров: 1559 (Статистика ведётся с 06.02.2017)
Дата последнего изменения: 30.09.2016

Дополнительным фактором, влияющим на производительность системы, является правильное использование баз данных. Все современные проекты для отображения динамической информации (новостей, каталога товаров и др.) используют СУБД (системы управления базами данных), а СУБД, в свою очередь, требует правильной настройки своих параметров.

Соединение с базой данных

База данных представляет собой независимое клиент-серверное приложение, которое запускается и работает в операционной системе. Внешние приложения соединяются с базой данных через TCP/IP или внутренние потоки, направляют SQL-запросы и получают в ответ от базы данных необходимые данные.

Возможно два типа соединения с базой данных для веб-приложения:

  • обычное соединение;
  • постоянное соединение (Persistent).

Обычное соединение устанавливается каждый раз во время выполнения страницы при первом обращении к базе данных. Установленное соединение освобождается (в большинстве случаев и закрывается) после завершения страницы.

Постоянное соединение (функции PHP обычно называются *_pconnect) устанавливается один раз при первом обращении к базе данных и при повторных обращениях, даже из других страниц, используются уже открытые соединения к базе данных.

Учитывая, что открытие соединения к базе данных - процесс относительно дорогой по ресурсам и времени (происходит установление TCP/IP соединения, выделяются буферы памяти, проводится проверка и авторизация, настраиваются перекодировщики и выполняется целый ряд других функций), использование постоянных соединений является предпочтительным, если это не приводит к превышению числа одновременных соединений с базой данных. Целесообразность применения постоянных соединений прямо пропорциональна частоте обращений к базе данных, то есть посещаемости сайта.

Например, если на сайте за 15 минут в среднем бывает по 100 посетителей, применение define("DBPersistent", true); целесообразно, если по 5, то, конечно же, нет.

Примечание: Устанавливая соединение с базой данных, при указании параметру server значения localhost или localhost:port, PHP в большинстве своем будет пытаться соединиться с локальным сокетом без использования TCP/IP. Если вы все же хотите использовать TCP/IP, используйте адрес 127.0.0.1 вместо localhost.

Соединение без использования TCP/IP дает наивысшие результаты по производительности, особенно при передаче больших объемов информации из базы данных. Но если база данных расположена на другой машине и избежать соединения по TCP/IP не удается, использование постоянного соединения становится еще более выгодным.

В большинстве случаев база данных работает на той же машине, что и PHP-приложение и веб-сервер. Но вполне возможна ситуация, когда база данных установлена на соседней машине или даже у другого провайдера. "1С-Битрикс: Управление сайтом" устанавливает соединение с сервером базы данных через стандартные библиотеки, которые идут в поставке языка программирования PHP.

В "1С-Битрикс: Управление сайтом" тип соединения с базой данных устанавливается в файле: /bitrix/php_interface/dbconn.php в старом ядре и в файле /bitrix/.settings.php в ядре D7.

Пример содержимого файла:

define("DBPersistent", true);
$DBType = "mysql";
$DBHost = "localhost:31006";
$DBLogin = "root";
$DBPassword = "";
$DBName = "bsm_demo";
$DBDebug = false;
$DBDebugToFile = false;

Используйте константу DBPersistent, чтобы установить тип соединения с базой данных.

Для отключения постоянного соединения используйте:
define("DBPersistent", false);

Использование постоянных соединений может потребовать некоторой настройки Apache и MySQL. Убедитесь, что вы не превысите максимальное число дозволенных соединений. Читайте дополнительную информацию в документации PHP относительно используемой вами базы данных.

Используемые базы данных

"1С-Битрикс: Управление сайтом" поддерживает следующие типы баз данных:

Работа с базами данных в Bitrix Framework

11
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии