Основнок время при работе вебсайта это запрос к базе данный.
Бак работает жесткий диск:
http://pc-information-guide.ru/zhest...utera-hdd.html
Кратко: на общем валу насажено несколько дисков, магнитные дорожки,
каждого находятся друг над другом и образуют так называемый цилиндр.
Есть коромысло с несколькими магнитными головками, по одной на каждый диск. Коромысло движется,
устанавливается на необходимый цилиндр и производит запись/чтение. Движется оно шустро, но конечно это
занимает значительное по компьютерным понятиям время.
Получается что когда коромыслр установлено на некоторый цилиндр оно
может очень быстро считывать или записывать инфлрмацию. А вот если при выполнении sql запроса требуется
обращение к таблицам находящимся на разных цилиндрах, то коромыслу приходится перемещаться и время выполнения
запроса резко увеличивается, иногда становится неприемлимым. Например для профиля пользователя надо по
имеющемуся ключам выбрать наименование страны, региона, города, улицы. Это потребует обращения к таблице с
профилем и еще к четырем.
Может быть катастрофа, если таблицы находятся на разных цилиндрах. Кеширование помогает но не всегда.
Твердотельные диски не имеют этой проблемы.
Здесь Вы можете ознакомиться с результатами испытаний и сравненее hdd с ssd
https://m.geektimes.ru/post/276052/
Разница в скорости десятки раз
А чтобы зло пресечь собрать бы hdd да сжечь! Но hdd память сильно дешевле, без них не обойтись. Так что
проблему надо решать, основные методы:
- оптимизировать расположение таблиц на диске. Для каждой реально работающей программы есть распределение
вероятностей запросов. Можно оптимально расположить таблицы минимизируя среднее время доступа или максимальное
время доступа. Это может сделать программист или же программа. Но я такой программы не смог найти. Кто знает
подскажите, пожалуйста.
- использовать два или больше дисков, также оптимизируя расположение таблиц. Например один из дисков может быть
ssd и на нем расположить маленькие таблицы.
- использовать оперативную память, она даже быстрее чем sdd, а уж если использовать кеш память то будет совсем
быстро. Для этого годятся журналируемые хранилища например
redis , memcached. Поскольку большинство сайтов работает на хостингах и виртуальных серверах без сисадмина, было бы
полезно сделать журналируемое хранилмще не требующее устпновки, на базе cron.
Беда в том что самая популярная субд mysql не позволяет размещать таблицы на разных дисках и тем
более не использует журналируемые хранилише. Может быть есть расширения для mysql позволяющие делать это ,
но я таких найти не сумел. Кто знает подскажите, пожалуйста.
Предлагаю основать open source проект и разработать систему для оптимизации дисковой памяти.