|
|
|
Продолжение борьбы со скоростью выполнения запросов
|
|||
|---|---|---|---|
|
#18+
8POWER-Решил попробовать LOAD INDEX INTO CACHE, как вы советовали. Очистил снова кеш дебиана. Запрос (на выборку 200к строк) начал грузиться 60 сек. Затем загрузил все индексы в кеш. Запрос стал грузиться 15 сек. Думаю блин, попробую теперь сделать дубликат таблицы. Сделал дубликат. В таблице, которая задублирована - этот же запрос выполняется 1сек. Как такое происходит? :(Если это было для MyISAM, то могу предположить, что дело в том, что файловая система закэшировала содержимое таблицы. Сам MyISAM не умеет кэшировать содержимое таблиц, а только индексов. А для выполнения вашего запроса требуется сначала по индексу определить нужные записи, а потом получить их содержимое из самой таблицы. Если бы было достаточно оперативки, чтобы разместить все данные в памяти, то можно было бы попробовать покрывающий индекс - индекс, в котором есть все выбираемые поля. Тогда кэша индексов MyISAM было бы достаточно. Правда, в этом случае (когда все данные влезают в оперативку) возникает выбор - а не стоит ли задействовать какую-нибудь key-value СУБД. Для класса задач выбора данных по единственному полю они могут дать меньшее врем выполнения, чем РСУБД. Но эта тема мне знакома очень слабо, так что подробностей никаких предложить не могу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2018, 22:18 |
|
||
|
Продолжение борьбы со скоростью выполнения запросов
|
|||
|---|---|---|---|
|
#18+
8POWER-Поставил на домашний комп 8 масик, залил эту же таблицу в 216 млн строк. Делаю аналогичный запрос без всяких загрузок индексов в кеш - 1 секунда времени занимает. Учитывая, что оперы на компе всего 16гб. А на сервере аж 128 и из них кешируется 50, если индексы загружать.А что именно не так? "кешируется 50" - это речь про результат free -m ? Так там кэшируются все файлы, к которым было обращение, а не только таблицы MySQL. Мало ли чем там еще сервер занят... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2018, 22:21 |
|
||
|
Продолжение борьбы со скоростью выполнения запросов
|
|||
|---|---|---|---|
|
#18+
miksoft8POWER-Решил попробовать LOAD INDEX INTO CACHE, как вы советовали. Очистил снова кеш дебиана. Запрос (на выборку 200к строк) начал грузиться 60 сек. Затем загрузил все индексы в кеш. Запрос стал грузиться 15 сек. Думаю блин, попробую теперь сделать дубликат таблицы. Сделал дубликат. В таблице, которая задублирована - этот же запрос выполняется 1сек. Как такое происходит? :(Если это было для MyISAM, то могу предположить, что дело в том, что файловая система закэшировала содержимое таблицы. Сам MyISAM не умеет кэшировать содержимое таблиц, а только индексов. А для выполнения вашего запроса требуется сначала по индексу определить нужные записи, а потом получить их содержимое из самой таблицы. Если бы было достаточно оперативки, чтобы разместить все данные в памяти, то можно было бы попробовать покрывающий индекс - индекс, в котором есть все выбираемые поля. Тогда кэша индексов MyISAM было бы достаточно. Правда, в этом случае (когда все данные влезают в оперативку) возникает выбор - а не стоит ли задействовать какую-нибудь key-value СУБД. Для класса задач выбора данных по единственному полю они могут дать меньшее врем выполнения, чем РСУБД. Но эта тема мне знакома очень слабо, так что подробностей никаких предложить не могу. Тогда наиболее вероятно то, что при дубликате MyISAM таблицы - она кешируется полностью в память, т.е. не только индексы.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2018, 22:56 |
|
||
|
Продолжение борьбы со скоростью выполнения запросов
|
|||
|---|---|---|---|
|
#18+
miksoft8POWER-Очистил снова кеш дебиана. Запрос (на выборку 200к строк) начал грузиться 60 сек. Затем загрузил все индексы в кеш. Запрос стал грузиться 15 сек.Даже несколько раз подряд 60 секунд? И потом несколько раз подряд по 15 секунд? При замерах времени выполняйте запросы несколько раз, чтобы лучше понимать влияние кэшей. Каждый запрос по одному разу, т.к. дальше он кешируется. SQL_NO_CACHE нельзя было на продакшене выполнить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2018, 22:56 |
|
||
|
Продолжение борьбы со скоростью выполнения запросов
|
|||
|---|---|---|---|
|
#18+
miksoft, и последний вопрос. Стоит ли нам вообще переходить на InnoDB? Я вот сейчас смотрю на то, какой он вялый - это ужас. MyISAM делает дубликат в 20 раз быстрее, заливает данные намного быстрее, и селектит тоже намного быстрее. Может просто создать эти 2 таблицы в MyISAM ? У нас происходит только SELECT абсолютно всегда и то по индексам. И раз в день около 5-10 минут инсерт. Апдейтов никогда не бывает, делетов тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2018, 22:58 |
|
||
|
Продолжение борьбы со скоростью выполнения запросов
|
|||
|---|---|---|---|
|
#18+
8POWER-Стоит ли нам вообще переходить на InnoDB? Я вот сейчас смотрю на то, какой он вялый - это ужас. MyISAM делает дубликат в 20 раз быстрее, заливает данные намного быстрее, и селектит тоже намного быстрее.Есть у меня подозрение... Проверьте, в какое значение установлена настройка innodb_api_trx_level в конфиге. Если в 1 или ни в какое, то поставьте 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2018, 00:22 |
|
||
|
Продолжение борьбы со скоростью выполнения запросов
|
|||
|---|---|---|---|
|
#18+
8POWER-Может просто создать эти 2 таблицы в MyISAM ? У нас происходит только SELECT абсолютно всегда и то по индексам.Можно и в MyISAM. Пробуйте. Как дополнительный вариант для тестов - создать покрывающие индексы на все нужные поля. Первыми должны идти поля по которым идет отбор, т.е. те, которые я вынес в PK. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2018, 00:24 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39717351&tid=1829546]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 363ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...