[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Оптимальное использование MySQL
max_ru
В настоящее время занимаюсь довольно - таки крупным проектом.
Решил реализовать коннект с базой данных так:
1) Класс lib_db -> методы Connect(),Query() и прочая шелуха
2) Класс lib_db MySQL extends lib_db -> Реализация конкретных запросов к конкретной базе данных (драйвер бд)
3) Файл dbquery.php -> содержит шаблоны запросов для конкретного драйвера БД.
(например const DBSELECT_WOL='SELECT [what] FROM [where] WHERE [uslovie] ORDERBY [order] LIMIT [limit]';)

Собственно, вопрос даже не в этом. Вопрос в том - как удобнее - коннектиться к бд 1 раз из 1го места и держать соединение открытым до конца или прописать в __destruct() дисконнект от бд и создавать класс там где мне нужно.

Вот, чтобы вам было удобнее подикутировать на эту тему я напишу плюсы и минусы методов.

Постоянный коннект:
+ Если произошло соединение с бд, то оно будет доступно в течение всего времени исполнения скрипта
- Если скрипт выполняется долго, то я "теряю" возможность подключения (max_connection_limit) при большой загрузке (кто юзал IPB, тот знает)
- Если какой-либо из модулей убьет соединение, весь скрипт покатится черт знает куда

Динамический коннект:
+ Экономия "мест" соединений с БД (подсоединился - получил результат - отсоединился)
+ Стабильность работы приложения при отказе некоторых модулей (ну не смог один из модулей приконнектиться)
- Возможны случаи, когда один из модулей как-раз не сможет приконнектиться.(может нарушиться логика работы сайта)

Если кто-то знает другие плюсы и минусы - пишите сюда (какой метод буду использовать - я уже решил, интересно, что скажут остальные...)



Спустя 3 часа, 54 минуты, 57 секунд (9.10.2006 - 15:56) BlackTheMad написал(а):
Видимо, ты выбрал себе второй.
Но вот я где-то читал, что при нормально составленных запросах, не делающих join'ы милионных таблиц, основное время уходит как раз на коннект. На конференции весенней Rasmus Lerdorf про это вещал
http://talks.php.net/show/phpclub/6
Это слайды с конфы...правда там используется PGSQL...может с MySQL всё обстоит совсем иначе.

=)

Спустя 10 дней, 16 часов, 45 минут, 53 секунды (20.10.2006 - 08:42) max_ru написал(а):
BlackTheMad, действительно, я выбрал себе второй способ.
Заметного снижения производительности движка не было замечено (это при том, что движок полностью объектный, за исключением линейного скрипта инициализации библиотек, плюс движок является парсером текстовых файлов - шаблонов и динамически подключает библиотеки). Таким образом на фоне "тяжелости" движка, 5-6 подключений к mySQL не будут заметны в принципе (ну дадут они 2 сотых секунды, ну и что).
Итого: генерация страницы ( 5-6 псевдо-тэгов© ;) плюс десяток подключаемых динамически макросов) занимает в среднем от 0.05 до 0.3 секунды (в зависимости от загруженности сервака).


_____________
Взгляд у меня добрый, но рубашка - смирительная.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.