Вход

Просмотр полной версии : Как ускорить работу вебсайта


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

laimas
26.03.2018, 20:36
Удачного бота кто-то написал.

lerneree
27.03.2018, 14:32
отвечай по существу или уж помалкивай в тряпочку

laimas
27.03.2018, 14:35
lerneree,
вы написали в нескольких постах всякой хрени по немного, слив все в кучу. Теории увлекают или просто посудачить охота?

lerneree
28.03.2018, 12:31
пищите конкретно где и почему хрень .
кстати на других форумах вполне конструктивно обсуждаем

laimas
28.03.2018, 12:39
lerneree,
было бы корректным размещать все что вы понаписали в разных разделах форму в одном разделе - оффтопик. Именно там место всех ваших простраций.

lerneree
29.03.2018, 11:06
профессор не вижу ни одного слова по существу. а я могу с\казать что вы пишите хрень

laimas
29.03.2018, 11:35
профессор не вижу ни одного слова по существу.

Ну да, блин, а ваше все, что сводится к одному "есть ли жизнь на Марсе, нет ли жизни на Марсе..", ну прям так и тянет на полемику хлебом не корми? Понаписали в нескольких темах бреда и ждете чего-то.