Jump to content

Как настроить правильную работу БД?


Litesm

Recommended Posts

Господа, есть ли какие-то правильные настройки по Базе данных ? У меня БД разрослась до 2.7 Гагабайт.
В настройках хостинга есть функция "ремонт Таблицы и Оптимизировать таблицы" в итоге размер уменьшился до 45 Мегабайт. 

Также в моей админке предупреждение о хранении даных. Что посоветуете ?

Снимок экрана 2020-11-12 в 16.49.13.png

Link to comment
Share on other sites

Мемкэш убрали, он редису проигрывает в подобных задачах.  

3 часа назад, Litesm сказал:

Что посоветуете ?

Перейти на redis. Если нет возможности, то на DB. Файловая система для хранения данных самый плохой вариант. 

Link to comment
Share on other sites

40 минут назад, Desti сказал:

Файловая система для хранения данных самый плохой вариант.

Чем же? Он вроде по умолчанию используется.

Link to comment
Share on other sites

9 минут назад, ololsh сказал:

Чем же? Он вроде по умолчанию используется.

Ну так используйте на здоровье, кто я такой, чтобы спорить с "умолчанием".

Link to comment
Share on other sites

2 минуты назад, Desti сказал:

Ну так используйте на здоровье, кто я такой, чтобы спорить с "умолчанием".

Вы в какой-то категорической форме говорите что файловая система самый плохой способ, вот и хотел узнать чем же она хуже по вашему? Не понимаю какое отношение это имеет к тому чем я пользуюсь.

Link to comment
Share on other sites

Не очень хочу спорить с тем, для кого не очевидно, что среди этих трех видов хранение на диске самый медленный и затратный для ОС способ. Даже в базе хранить менее затратно. У меня в кеше редиса постоянно сидят 6000-7000 сессий, вы даже не представляете, как всё это тормозит, если переключить на "диск". 

Link to comment
Share on other sites

 

10 минут назад, Desti сказал:

Не очень хочу спорить с тем, для кого не очевидно, что среди этих трех видов хранение на диске самый медленный и затратный для ОС способ.

Ну конечно, без быдловатых ответов в духе "даже не хочу спорить, если не очевидно" ну никак не обойтись тут.
 

16 минут назад, Desti сказал:

У меня в кеше редиса постоянно сидят 6000-7000 сессий, вы даже не представляете, как всё это тормозит, если переключить на "диск"

Тоже, сравнили хранилище типа ключ-значение в оперативной памятью с диском. Сессии как раз и хранятся в базе данных если не настроен метод кеширования редис.
Речь о том, чем же файловая система для хранения datastore хуже чем mysql хранилище? Mysql база разве не на диске находится и оттуда данные не нужно получать? А как же накладные расходы на подключение и передачи данных? На диске хранится датасторе, это системные настройки и кеши приложений. Я бы не сказал что файловая система в данном случае самый худший вариант из всех. Понятно, что если есть пару лишних сотен мегабайт оперативной памяти быстрее их всех типов будет Redis как хранилище key-value, но по отношению к mysql не все так однозначно хуже.

Link to comment
Share on other sites

 

2 минуты назад, ololsh сказал:

Mysql база разве не на диске находится и оттуда данные не нужно получать?

Давайте не будем продолжать, не интересно. 

Link to comment
Share on other sites

1 минуту назад, Desti сказал:

 

Давайте не будем продолжать, не интересно. 

А мне наоборот, все только интересней. :) Поясните пожалуйста цитату если вам не затруднительно, может быть чего-то я не знаю.

Link to comment
Share on other sites

2 часа назад, Desti сказал:

Мемкэш убрали, он редису проигрывает в подобных задачах.  

Перейти на redis. Если нет возможности, то на DB. Файловая система для хранения данных самый плохой вариант. 

на моем Хостинге Redis - это платная услуга.

 

1 час назад, Desti сказал:

Не очень хочу спорить с тем, для кого не очевидно, что среди этих трех видов хранение на диске самый медленный и затратный для ОС способ. Даже в базе хранить менее затратно. У меня в кеше редиса постоянно сидят 6000-7000 сессий, вы даже не представляете, как всё это тормозит, если переключить на "диск". 

для меня не очевидно ,я никогда не обращал внимания на этот пункт, пока БД не увеличилась до 2.7 Гб, что превысило мой тариф по SSD на хостинге, и когда я попытался очистить кеш через Админку форума - сайт слетел к чертям. Поэтому и создал тему. А вы если по делу ничего не можете сказать - не флудите 

Link to comment
Share on other sites

3 минуты назад, Litesm сказал:

А вы если по делу ничего не можете сказать - не флудите

Вам всё сказали в сообщение №3, там даже гораздо больше информации, чем нужно, чтобы ответить на вопрос "Что посоветуете". 

 

А для любителей хранения на диске - ну сделайте простой тест, создайте 1000 файлов со 100 байтами текста, затем создайте таблицу в базе с 1000 записей и сделайте две операции с фиксацией времени: а) считайте (корректно, открыть-прочитать-закрыть) содержимое 1000 файлов в переменную и б) сделайте запрос к базе на все записи. Возможно, всё станет немного очевиднее. 

14 минут назад, Litesm сказал:

и когда я попытался очистить кеш через Админку форума - сайт слетел к чертям.

Я чищу кеш IPS как минимум раз в неделю уже много лет, это вообще никак на сайт не влияет (и не может влиять).

Link to comment
Share on other sites

utf8mb4 определяет формат хранения символов в базе. Поскольку в будущем mysql планирует отказаться от простого single-byte utf8 формата и сделать 4-х байтный стандартом, а ips уже на этом формате, то есть смысл сконвертировать. Размер базы вырастет, это надо учитывать. 

5 минут назад, Desti сказал:

single-byte utf8

Ну и надо понимать, что это не однобайтовый формат, а обозначение единицы хранения, максимум в этом формате может быть 3 байта, поэтому всякие новомодные эмодзи с их 4-х байтной кодировкой в старые поля не лезут. И размер базы вырастет не в 4 раза, а поменьше (на сколько - не знаю). 

Link to comment
Share on other sites

Традиционно кеш системы хранился в базе данных. Если бы все так идеально было с базой как нам рассказывают, то незачем было создавать "худший метод" хранения в файловую систему. Обычно делается наоборот - добавляют способы улучшающие существующие методы.
Файловая система не так уж плоха как ее пытаются тут выставить. Да, у нее есть свои минусы,  но не надо идеализировать mysql и забывать, что и там своих минусов хватает. Mysql это сервер, ему нужно время обработать запрос, требуется время на обмен данных, может быть перегружен, может быть большая очередь. И не надо уповать на тупой примере с подключением 1000 файлов, думаю что в mysql все данные получите одним запросом и он его так быстро обработает что даже моргнуть не успеете. По умолчанию загружаются только предустановленные кеши, для всех остальных происходит отдельные запросы. Если что-то написано криво, то вы вместо 1000 подключений получите в худшем случае несколько сотен запросов.

Вот бенчмерки с одного и того же форума. Обычный среднестатистический форум версии 4.4x
Количество гостей онлайн - 100
Количество пользователей онлайн - 5
Параметры сервера - неизвестно,
Загруженность - "низкая"

Файловая система

IPS\Data\Store\FileSystem
Array
(
    [settings] => 0.000362
    [themes] => 0.000232
    [groups] => 0.000225
    [storageConfigurations] => 0.000087
    [languages] => 0.000082
    [javascript_map] => 0.000079
    [applications] => 0.000336
    [cms_databases] => 0.000168
    [cms_fieldids_1] => 0.000077
    [cms_fieldids_2] => 0.000067
    [cms_fieldids_3] => 0.000069
    [cms_fieldids_4] => 0.000069
    [cms_fieldids_5] => 0.000068
    [cms_fieldids_6] => 0.000077
    [moderators] => 0.000075
    [furl_configuration] => 0.000297
    [modules] => 0.000308
    [rssFeeds] => 0.000071
    [bannedIpAddresses] => 0.000067
    [profileSteps] => 0.000089
    [profileFields] => 0.000144
    [administrators] => 0.000070
    [template_2_58e6e78f757be24525684f41df8d1698_tables] => 0.000655
    [template_2_ad9ae6e9ced8695954ac11f917afdfac_global] => 0.000278
    [template_2_1bb0e8f6d56f81d6c7163246c7be5ae2_forums] => 0.001061
    [forumsSavedActions] => 0.000074
    [template_2_c8c276c9a99811c050a8036df5d2db06_forms] => 0.001834
    [template_2_46b82e53682bf97617c36aa125473bea_global] => 0.000992
    [template_2_94a9d7649fb9cdbfc784d3516e61a717_global] => 0.003183
    [widgets] => 0.000148
    [metaTags] => 0.000107
    [announcements] => 0.000172
    [acpNotificationIds] => 0.000073
    [acpNotifications] => 0.000071
    [template_2_05babf262d9c3036d4373dfb8d233fa3_store] => 0.001114
    [promoters] => 0.000079
    [frontNavigation] => 0.000081
    [defaultStreamData] => 0.000077
    [license_data] => 0.000092
)
TOTAL: 0,01321


База данных (Mysql). Отдельный массив это отдельный запрос.

IPS\Data\Store\Database
Array
(
    [0] => Array
        (
            [keys] => Array
                (
                    [0] => cacheKeys
                    [1] => settings
                    [2] => storageConfigurations
                    [3] => themes
                    [4] => languages
                    [5] => groups
                    [6] => applications
                    [7] => modules
                    [8] => widgets
                    [9] => furl
                    [10] => javascript_map
                    [11] => metaTags
                    [12] => bannedIpAddresses
                    [13] => license_data
                    [14] => furl_configuration
                    [15] => rssFeeds
                    [16] => frontNavigation
                    [17] => globalStreamIds
                    [18] => profileSteps
                    [19] => nexusPackagesWithReviews
                    [20] => cms_menu
                    [21] => cms_databases
                    [22] => pages_page_urls
                    [23] => announcements
                    [24] => loginMethods
                    [25] => widgets
                    [26] => defaultStreamData
                    [27] => acpNotifications
                    [28] => emoticons
                    [29] => administrators
                    [30] => moderators
                    [31] => group_promotions
                    [32] => promoters
                )

            [TOTAL] => 0.01130486
        )

    [1] => Array
        (
            [keys] => Array
                (
                    [0] => template_1_05babf262d9c3036d4373dfb8d233fa3_store
                    [1] => template_1_f5e47eab634595f1012d63f22062082b_global
                    [2] => template_1_46b82e53682bf97617c36aa125473bea_global
                    [3] => template_1_c8c276c9a99811c050a8036df5d2db06_forms
                    [4] => template_1_6b57f516a06e7a9b9d17e2f40f0ce290_forms
                )

            [TOTAL] => 0.00442791
        )

)
TOTAL: 0,01573277

 

Корреляции могут быть как в большее так и меньшее значение для обоих методов.
Особого прироста или ухудшение производительности я не наблюдаю по ним.
Из всего вышесказанное можно сделать заключение, что у каждого способа есть свои плюсы и минусы. В определенных обстоятельствах может выигрывать mysql, например если у вас много кешей и загружаются они все одним - двум запросами и mysql сервер не нагружен. В других производительнее может оказаться ФС, если форум стандартный или нужно снизить нагрузку на mysql сервер.

ПС
Я не агитирую за тот или иной метод, эти способы плюс минус одинаковы в стандартных условиях, особой разницы в производительности между ними нету. Просто утверждение что ФС самый худший вариант без разбора не считаю корректным в этом случае.

Link to comment
Share on other sites

С дисками возникает много нюансов.

Например SSD или HDD

На виртуальном сервере или хостинге SSD это пустой звук. Потому-что там на одном физическом диске сидит черт знает сколько клиентов и каждый тащит его на себя. Тут вам дают всего лишь кусочек диска и скорость доступа для вас не максимальна.

На выделенном не виртуальном сервер весь диск полностью ваш и вы можете иметь сколь угодно физических дисков. Тут уже все зависит от того насколько вы его нагружаете. Но не исключено, что отдельный SSD вполне без проблем подойдет для любых нужд.

Но Redis все же наверняка выигрывает даже перед M2 дисками. Насколько я знаю еще нет устройств хранения быстрее оперативной памяти.

Link to comment
Share on other sites

ololsh Я снова повторю, что спорить на эту тему не вижу смысла. Все эти "если...", "плюс-минус" и "в некоторых случаях" примерно как спор, что лучше: голый IIS на пустом i9-9900/32Gb и debian на P4/4Gb, где запущено одновременно.. всё. 

 

1 час назад, aplayer сказал:

На виртуальном сервере или хостинге SSD это пустой звук.

Ну а на реальном? Или так бывает, что талантливый админ на ssd держит статику, а мускуль крутится на hdd и нещадно тормозит на радость ololsh ? 

ololsh спасибо за тесты, но я не могу оценивать их точность, не зная методики их проведения.

Link to comment
Share on other sites

4 часа назад, Desti сказал:

Или так бывает, что талантливый админ на ssd держит статику, а мускуль крутится на hdd

Это скорее для сохранности. У ССД ограниченный ресурс записи. А mysql использует диск динамически.

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Ваша ссылка была автоматически строена.   Отображать как обычную ссылку

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...