Jump to content

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

Featured Replies

Posted
comment_164998

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

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

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

comment_165004

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

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

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

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

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

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

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

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

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

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

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

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

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

comment_165010

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

comment_165011

 

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

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

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

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

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

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

comment_165012

 

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

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

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

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

 

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

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

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

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

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

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

 

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

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

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

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

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

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

 

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

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

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

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

comment_165017

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

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

single-byte utf8

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

comment_165018

Традиционно кеш системы хранился в базе данных. Если бы все так идеально было с базой как нам рассказывают, то незачем было создавать "худший метод" хранения в файловую систему. Обычно делается наоборот - добавляют способы улучшающие существующие методы.
Файловая система не так уж плоха как ее пытаются тут выставить. Да, у нее есть свои минусы,  но не надо идеализировать 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 сервер.

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

comment_165019

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

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

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

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

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

comment_165020

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

 

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

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

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

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

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

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

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

 

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
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.