Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2018, 19:20   #1
lerneree
Пользователь
 
Регистрация: 26.03.2018
Сообщений: 18
По умолчанию Как ускорить работу вебсайта

Основнок время при работе вебсайта это запрос к базе данный.
Бак работает жесткий диск:
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 проект и разработать систему для оптимизации дисковой памяти.
lerneree вне форума Ответить с цитированием
Старый 27.03.2018, 09:08   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

главное средство для "ускорения" SQL это ИНДЕКСЫ.
УПОРЯДОЧЕННЫЙ список значений отдельных полей (тех по которым происходит частый поиск/фильтрация).
так что для проверки данного поля не нужно даже полностью считывать ВЕСЬ такой набор.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 27.03.2018, 13:12   #3
lerneree
Пользователь
 
Регистрация: 26.03.2018
Сообщений: 18
По умолчанию

индексы помогают при больших таблицах. если у вас несколько маленьких таблиц
которые физически расположены на разных цилиндрах запрос будет выполняться долго.
коромысло несколько раз переместится будет беда
lerneree вне форума Ответить с цитированием
Старый 27.03.2018, 15:53   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
коромысло несколько раз переместится будет беда
даже если
Цитата:
не нужно даже полностью считывать ВЕСЬ такой набор.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 27.03.2018, 16:19   #5
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

что за спам-бот везде свои бредовые идеи толкает.....
на втором форуме вижу
ADSoft вне форума Ответить с цитированием
Старый 27.03.2018, 16:36   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
что за спам-бот везде свои бредовые идеи толкает.....
зачем Вы человека обижаете?!
Он же вразумительно отвечает на комментарии.
что же касается его альтернативного взгляда - то это его личное дело.
Да, я, например, тоже не согласен с его мнением.
Ну и и пусть. А у него вот такое мнение. Поперёк всему.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.03.2018, 21:53   #7
lerneree
Пользователь
 
Регистрация: 26.03.2018
Сообщений: 18
По умолчанию

кстати на нескольких форумах началось вполне коструктивное обсуждение. к счастью не все дебилы начинающие орать даже не пытаясь разобраться. если есть разумные возражения буду рад выслушать. для того и запостил
lerneree вне форума Ответить с цитированием
Старый 01.04.2018, 02:33   #8
Ottava
Форумчанин
 
Регистрация: 05.09.2017
Сообщений: 157
По умолчанию

Основные принципы ускорения работы вебсайта:
- вынос яваскриптов, CSS и картинок на CDN
- кэширование страниц (включая поддержку заголовков Etag и Last-Modofied)
- оптимизация запросов к БД (включая создание правильной структуры таблиц, выбор правильной БД - sql/nosql)
- тюнинг веб-сервера под тяжело нагруженные проекты
- правильный подбор языка для скриптов на сервере (Фэйсбук даже разрабатывал HipHop VM для трансляции PHP в С)
- перенос части обработки данных на клиента

Реализовывайте, или можете придумать что-либо своё. Но универсального решения - нет, и сделать один opensource проект на все случаи жизни не получится.
Безопасность с Content Security Policy

Последний раз редактировалось Ottava; 01.04.2018 в 02:40.
Ottava вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как ускорить работу праграммы Maxym_Ko Общие вопросы по Java, Java SE, Kotlin 2 25.11.2017 16:04
Как ускорить работу приложения? rownong C# (си шарп) 9 11.08.2017 10:03
Как ускорить работу exel Fedis1 Microsoft Office Excel 2 17.04.2014 19:01
Как ускорить работу программы SibBear Общие вопросы Delphi 7 27.03.2009 14:40
Как ускорить работу с сетевой БД Ramires БД в Delphi 3 21.08.2008 12:16