[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Оптимизация БД
Serg86
В общем есть бд
Версия MySQL: 10.1.10-MariaDB
Размер 1,2 гб.
В ней есть две основных таблицы в первой около 350 000 (520 мб) строк и куча столбцов.
Как мне кажется она и создает нагрузку.
Вторая около 2 500 000 строк (350 мб) и 4 столбца, но выборка из неё идет в основном по id.

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

Подумывал насчет партиционирования, только не совсем понимаю, будет ли каждая партиция кешироваться отдельно или вся таблица целиком.

Еще мне не совсем понятен механизм партиционирования, допустим я разбил информацию за год на 12 партиций, в кроне поставил задание разбивать скажем каждого первого числа партицию текущего месяца пополам исходя из даты добавления строк.

Будут ли старые партиции удалены если из них удалить все записи.
Будут ли индексы также разделены по партициям.
T1grOK
Цитата (Serg86 @ 20.02.2016 - 10:23)

Как мне кажется она и создает нагрузку.

Цитата (Serg86 @ 20.02.2016 - 10:23)

Я так думаю что изза кеширования.

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

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Serg86
Цитата

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

Подскажите как выяснить.
sergeiss
Цитата (T1grOK @ 20.02.2016 - 11:11)
Чтобы не делать предположений, сначала выясните, на чем конкретно тормозит

Присоединяюсь к этому пожеланию. Лучше потратить время на поиск истинной причины, чем "методом научного тыка" перебирать кучу разных вариантов изменений, причем с не гарантированным результатом.
Те же партиции могут быть очень полезны для больших таблиц. Но при определенных условиях. Если их применить просто так, "чтоб были", то можно еще бОльшие тормоза получить.

Цитата (Serg86 @ 20.02.2016 - 11:56)
Подскажите как выяснить.

Например, через EXPLAIN посмотри, как выполняются твои запросы. Вполне возможно, что там не используются индексы, на которые ты надеешься. Вообще индексы - очень важная часть в процессе оптимизации запросов. Иногда разница по времени выполнения запроса может быть в несколько порядков (с правильными индексами и без них).

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Serg86
Цитата
Например, через EXPLAIN посмотри, как выполняются твои запросы. Вполне возможно, что там не используются индексы, на которые ты надеешься. Вообще индексы - очень важная часть в процессе оптимизации запросов. Иногда разница по времени выполнения запроса может быть в несколько порядков (с правильными индексами и без них).


Это я все знаю, есть небольшой процент запросов который выболняется 4-5 сек, не добрался до них пока. Но дело не в индексах как мне кажется, а именно в самой логике или в конфиге MySql.


Цитата
Как мне кажется она и создает нагрузку.

Наверно не достаточно подробно выразился. Создает нагрузку на процессор, сьедает около 70% восьмиядерного процессора.
При индексировании поисковыми машинами, количество запросов сильно возрастает и начинаются тормоза.
T1grOK
Цитата (Serg86 @ 20.02.2016 - 08:12)
как мне кажется

dry.gif

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
redreem
Цитата
350 000 (520 мб) строк и куча столбцов

тут явно что "не красивое" smile.gif
может перепроектировать базу проще?
inpost
Serg86
А точно индексы стоят? 5 секунд смахивает на поиск без индексов wink.gif

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Serg86
Цитата
А точно индексы стоят? 5 секунд смахивает на поиск без индексов wink.gif

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

Цитата
350 000 (520 мб) строк и куча столбцов

тут явно что "не красивое" smile.gif
может перепроектировать базу проще?

Куча это 36
inpost
Serg86
У меня 100 столбцов и нормально, живём. Ты ищешь не там проблему. Проблема в отсутствии индексом.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
stump
Индексы это первое что надо сделать. Потом перепроектировать. Потом патиции.

_____________
Трус не играет в хокей
Serg86
Ок, за помощ всем спасибо, попробую для начала индексы до совершенства довести. Единственное чего пока для себя не понял это логика пртиций, смогу ли я по крону просто создавать новые партиции раз в месяц к примеру или раз в неделю и будут ли отваливаться старые при отсудствии записей в них, и как работает кеширование таблиц в оперативной памяти, будут ли кешироваться партиции отдельно? или вся таблица целиком будет опять бегать в оперативную память и скидываться при каждом изменении?
sergeiss
Цитата (Serg86 @ 20.02.2016 - 22:21)
смогу ли я по крону просто создавать новые партиции раз в месяц к примеру или раз в неделю и будут ли отваливаться старые при отсудствии записей в них

Если ты собрался по крону создавать партиции, то забудь про это!!! И почитай про них, т.е. про партиции, более внимательно.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.