Как можно ускорить скрипт подключения к БД? Салют, ребят, подскажите можно ли переписать скрипт лучше, если это я криворук. Смотрел скорость исполнения сценария через$start = microtime(true); //code_here echo (microtime(true) - $start).' сек.'; И обнаружил, что 75% времени сжирает этот кусок кода$db = new Database('localhost','devbase','developer','pass'); Пример конструктора и одного из методов отвечающих за удалениеclass Database { private $host; private $dbName; private $user; private $pass; private $DBH; function __construct($host,$dbname,$user,$pass) { $this->host = $host; $this->dbname = $dbname; $this->user = $user; $this->pass = $pass; $this->DBH = new PDO("mysql:host=$this->host;dbname=$this->dbname",$this->user,$this->pass); } function delete($tableName, $conditions, $priority = '') { $query = $this->DBH->prepare("DELETE $priority FROM $tableName WHERE $conditions"); return $result = $query->execute(); $query = null; $this->DBH = null; } } Какая сейчас логика: 1. При запросе страницы всегда создается этот объект т.к. всегда идёт запрос к БД 2. Далее в скрипте 1 или несколько раз идёт запрос по типу $db->select('phone, address','clients WHERE id=5567'); 3. В общем эта часть, где даже десяток раз подобным образом идёт запрос к БД на вывод данных занимает около 25% времени работы скрипта вместе со всей остальной логикой отрисовки. На данный момент с приложением работает менее 10 человек, в дальнейшем кол-во одномоментно работающих людей будет несколько сотен. Специфика работы такая, что иногда требуется открыть с пару десятков страниц, а если это делают несколько человек одномоментно, то приходится ждать 10-15с пока всё откроется и отрисуется. В общем не комильфо, и было бы круто разом на несколько десятков процентов увеличить скорость работы скрипта. Время затрачиваемое на создание этого объекта около 0,24 сек., при общем времени на вывод страницы 0,3 сек. В масштабах 1 человека экономия на спичках, в масштабах сотен уже нет.
Для ускорения скрипта подключения к БД можно использовать следующие подходы:
Попробуйте использовать долгосрочные подключения к БД (persistent connections), чтобы избежать создания нового соединения каждый раз при запросе страницы. Для этого можно добавить параметр PDO::ATTR_PERSISTENT в конструкторе PDO:$this->DBH = new PDO("mysql:host=$this->host;dbname=$this->dbname", $this->user, $this->pass, array(PDO::ATTR_PERSISTENT => true));Используйте подготовленные запросы (prepared statements) для улучшения производительности запросов к БД. Вместо выполнения запроса напрямую, используйте подготовленный запрос с параметрами:$query = $this->DBH->prepare("SELECT phone, address FROM clients WHERE id = :id"); $query->bindParam(':id', $yourId); $query->execute();
Попробуйте оптимизировать структуру таблиц в БД, добавив индексы, чтобы ускорить выполнение запросов.
Избегайте создания лишних объектов и закрытия соединения с БД после каждого запроса. Можно оставлять соединение открытым в течение жизни скрипта.
При необходимости можно использовать кэширование запросов или результатов запросов, чтобы уменьшить количество запросов к БД.
Эти подходы помогут оптимизировать скорость работы скрипта и ускорить выполнение запросов к базе данных.
Для ускорения скрипта подключения к БД можно использовать следующие подходы:
Попробуйте использовать долгосрочные подключения к БД (persistent connections), чтобы избежать создания нового соединения каждый раз при запросе страницы. Для этого можно добавить параметр PDO::ATTR_PERSISTENT в конструкторе PDO:$this->DBH = new PDO("mysql:host=$this->host;dbname=$this->dbname", $this->user, $this->pass, array(PDO::ATTR_PERSISTENT => true));Используйте подготовленные запросы (prepared statements) для улучшения производительности запросов к БД. Вместо выполнения запроса напрямую, используйте подготовленный запрос с параметрами:$query = $this->DBH->prepare("SELECT phone, address FROM clients WHERE id = :id");$query->bindParam(':id', $yourId);
$query->execute();
Попробуйте оптимизировать структуру таблиц в БД, добавив индексы, чтобы ускорить выполнение запросов.
Избегайте создания лишних объектов и закрытия соединения с БД после каждого запроса. Можно оставлять соединение открытым в течение жизни скрипта.
При необходимости можно использовать кэширование запросов или результатов запросов, чтобы уменьшить количество запросов к БД.
Эти подходы помогут оптимизировать скорость работы скрипта и ускорить выполнение запросов к базе данных.