Время ответа сервера — одна секунда
В данном небольшом посте я бы хотел поделиться своими мыслями насчёт скорости работы скриптов/программ, которые мы с вами пишем каждый день и обратить внимание на то, сколько «невидимой» работы совершается при выполнении привычных действий.Выполнение SQL-запросов Все знают, что работа с SQL обычно является одной из самых медленных компонентов любого сайта. Есть ли какие-то объективные причины для этого? Действительно ли базы данных такие медленные и срочно нужно переходить на NoSQL:)? Давайте посмотрим. Создадим тестовую табличку в MySQL и наполним её 1 млн записей: Код на PHP!
mysql_query ('CREATE TABLE IF NOT EXISTS `one_million` ( `id` int (11) unsigned NOT NULL AUTO_INCREMENT, `one` int (11) NOT NULL, `two` int (11) NOT NULL, `three` int (11) NOT NULL, `four` int (11) NOT NULL, `five` int (11) NOT NULL, `six` int (11) NOT NULL, `seven` int (11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB') or die («Cannot create table\n»);
for ($i = 0; $i < 1000000; $i++) { if ($i % 1000 === 999) echo "Done $i\n"; mysql_query('INSERT INTO one_million VALUES(NULL, ' . rand() . ', ' . rand() . ', ' . rand() . ', ' . rand() . ', ' . rand() . ', ' . rand() . ', ' . rand() . ')'); }
// Да, код не использует batch insert, а также использует устаревшее, но до сих пор работающее расширение mysql Давайте теперь выполним какой-нибудь простенький запрос, который прочитает нам 1 млн записей: SELECT COUNT (*) FROM one_million WHERE three = 333 На моем компьютере запрос выполнился за 200 мс! Таким образом, можно заключить, что InnoDB в состоянии просмотреть около 5 млн записей за 1 секунду! Давайте подумаем, где же на веб-сайтах может потребоваться просматривать столько записей на одну страницу :)? На моей прошлой работе я принудительно выставил ограничение в 20 000 просмотренных строк на все SQL-запросы, и после вычищения всех «тормозных» мест время открытия страницы упало в 5 раз! Читать дальше →