Перейти к содержанию

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


Рекомендуемые сообщения

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

Memcached уже убрали из методов кеширования?

У меня данные хранятся → "База данных MySQL".

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

Ссылка на комментарий
Поделиться на другие сайты

 

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

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

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

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

 

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

 

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

 

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

 

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

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

спасибо ) Лайк поставил. 

Второй момент. Эту штуку включать нада ? И что оно даст
 

Снимок экрана 2020-11-13 в 21.22.47.png

Ссылка на комментарий
Поделиться на другие сайты

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

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

single-byte utf8

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

 

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

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

 

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

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

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...