Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Кэширование запросов MySQL 5.1 vs 5.5 / 25 сообщений из 33, страница 1 из 2
17.04.2016, 10:05
    #39217464
A-MaR
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование запросов MySQL 5.1 vs 5.5
Дано: локальный MySQL сервер, таблица INNODB с уникальным индексом по полю Code_ varchar(45). Запрос с параметром вида Select Id from MyTable where Code_ = :Code_, выполняющийся с периодичностью от полминуты. Клиент на Delphi2007 + MyDAC 7.1.4. Пока база жила на MySQL 5.1, запрос стабильно выполнялся за ~0,3с первый раз после старта MySQL, и менее 0,01с (т.е. практически мгновенно) все последующие, независимо от паузы между запросами. На 5.5 ситуация изменилась не в лучшую сторону: долгие запросы проскакивают уже после паузы в несколько минут. Очень сильно подозреваю, что связано это именно с кэшированием. Что на 5.1, что на 5.5 все настройки изначально стояли по умолчанию, запрос SHOW VARIABLES LIKE "query_cache_size" в обоих случаях возвращает 0, но поскольку на 5.1 проблем не было, особо не заморачивался этим вопросом. На 5.5 попробовал изменить в my.ini параметр query_cache_size на 128... после перезапуска сервера запрос по-прежнему возвращает 0.
Вопросов собственно два:
1. C чем связано разное поведение одного и того же запроса на разных версиях сервера, и в кэшировании ли здесь дело?
2. Как все-таки включить кэш запросов?
...
Рейтинг: 0 / 0
17.04.2016, 11:06
    #39217478
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование запросов MySQL 5.1 vs 5.5
A-MaRЧто на 5.1, что на 5.5 все настройки изначально стояли по умолчаниюНу а чего вы тогда хотите?

Как переезжали на новую версию?
Как часто модифицируется таблица MyTable?
Покажите DDL таблицы MyTable и план запроса.
...
Рейтинг: 0 / 0
17.04.2016, 11:54
    #39217490
A-MaR
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование запросов MySQL 5.1 vs 5.5
miksoftA-MaRЧто на 5.1, что на 5.5 все настройки изначально стояли по умолчаниюНу а чего вы тогда хотите?

Как переезжали на новую версию?
Как часто модифицируется таблица MyTable?
Покажите DDL таблицы MyTable и план запроса.
1. Выгнал базу в скрипт mysqldump-ом на 5.1, развернул из скрипта на 5.5
2. В течении рабочего дня таблица не модифицируется.
3.
CREATE TABLE cards (
CardId bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
CardCode varchar(45) DEFAULT NULL,
CardSource set ('A', 'F') DEFAULT '',
PRIMARY KEY (CardId),
UNIQUE INDEX UK_cards_CardCode (CardCode)
)
ENGINE = INNODB
AUTO_INCREMENT = 471795
AVG_ROW_LENGTH = 5461
CHARACTER SET cp1251
COLLATE cp1251_general_ci;

Не совсем представляю, как показать план в читабельном виде, пусть будет так:
Код: plaintext
1.
|select_type|table|type |possible_keys    |key              |key_len|ref  |rows|Extra|
|SIMPLE     |cards|const|UK_cards_CardCode|UK_cards_CardCode|48     |const|1   |     |
...
Рейтинг: 0 / 0
17.04.2016, 12:36
    #39217504
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование запросов MySQL 5.1 vs 5.5
A-MaR,

innodb_buffer_pool_size чему равен?
...
Рейтинг: 0 / 0
17.04.2016, 12:51
    #39217510
A-MaR
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование запросов MySQL 5.1 vs 5.5
miksoftA-MaR,

innodb_buffer_pool_size чему равен?
8M, это на 5.5. Посмотрел инишник от 5.1 - там 138. Интересно...
...
Рейтинг: 0 / 0
17.04.2016, 12:56
    #39217515
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование запросов MySQL 5.1 vs 5.5
A-MaR8M, это на 5.5Вот поэтому и долго. Ставьте хотя бы как было. А лучше, чтобы с запасом влезли все таблицы и индексы, если есть столько оперативки.
...
Рейтинг: 0 / 0
17.04.2016, 14:08
    #39217539
A-MaR
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование запросов MySQL 5.1 vs 5.5
miksoft,

Памяти на компе 512. Попробовал выставить innodb_buffer_pool_size согласно рекомендациям 256М (50% от оперативки), заодно изменил innodb_log_file_size на 70. Вообще отказался запускаться, ошибка 1067. Начал уменьшать постепенно оба - бесполезно. Запустить удалось только вернувшись к исходным 8 и 10. Последние значения, которые пробовал перед этим - 100 и 50. Очень странно.
...
Рейтинг: 0 / 0
17.04.2016, 14:26
    #39217544
A-MaR
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование запросов MySQL 5.1 vs 5.5
Upd: Причина ошибки 1067 таки в innodb_log_file_size, больше 10 ни в какую не дает ставить. Первый параметр оставил 256, посмотрим, как завтра в работе себя покажет.
Спасибо за подсказку.
...
Рейтинг: 0 / 0
17.04.2016, 14:53
    #39217553
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование запросов MySQL 5.1 vs 5.5
A-MaR,

Если у вас в базе нет активной модификации таблиц, то innodb_log_file_size вообще можно было по дефолту оставить (5 Мбайт).

A-MaRПопробовал выставить innodb_buffer_pool_size согласно рекомендациям 256М (50% от оперативки)Эта рекомендация очень условная, предполагает, что на сервере работает только СУБД (т.е. без веб-сервера и т.п.) и что клиентских сессий не очень много (т.е. их буфера влезут в оставшуюся память).
...
Рейтинг: 0 / 0
17.04.2016, 16:06
    #39217582
A-MaR
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование запросов MySQL 5.1 vs 5.5
miksoftA-MaR,

Если у вас в базе нет активной модификации таблиц, то innodb_log_file_size вообще можно было по дефолту оставить (5 Мбайт).
Модифицируется в базе от силы таблиц 10, но активно. И конкретно на этом рабочем месте вставка и редактирование более медленные с самого начала, даже когда база была почти пустая: в отдельные таблицы больше половины модификаций занимают около 0,2с, тогда как на соседнем компе (там innodb_log_file_size=24, структура базы абсолютно такая же, но объем больше раз в 10) менее 0,01с. Так что innodb_log_file_size как раз хотелось бы увеличить.
...
Рейтинг: 0 / 0
17.04.2016, 16:29
    #39217588
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование запросов MySQL 5.1 vs 5.5
>Дано: локальный MySQL сервер
>Памяти на компе 512

Таак, без фотки компа тут вам не помогут...
...
Рейтинг: 0 / 0
17.04.2016, 16:36
    #39217593
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование запросов MySQL 5.1 vs 5.5
А, ну хотя это тот POS-терминал, такое еще возможно и это не виртуальный сервер, в котором обычно все тормозит по внешним относительно mysql причинам.
...
Рейтинг: 0 / 0
17.04.2016, 16:37
    #39217594
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование запросов MySQL 5.1 vs 5.5
A-MaR2. Как все-таки включить кэш запросов?

тебе наоборот это говно надо ВЫКЛЮЧАТЬ.
это не кэш данных, это кэш результатов выполнения запросов, абсолютно ненужная и вредная хрень.

тебе innodb buffer pull или как его там надо увеличивать. за счет quiet cache в том числе.

тем более, что у тебя так мало памяти на машине.
...
Рейтинг: 0 / 0
17.04.2016, 17:47
    #39217608
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование запросов MySQL 5.1 vs 5.5
A-MaRДано: локальный MySQL сервер, таблица INNODB с уникальным индексом по полю Code_ varchar(45). Запрос с параметром вида Select Id from MyTable where Code_ = :Code_, выполняющийся с периодичностью от полминуты. Клиент на Delphi2007 + MyDAC 7.1.4. Пока база жила на MySQL 5.1, запрос стабильно выполнялся за ~0,3с первый раз после старта MySQL, и менее 0,01с (т.е. практически мгновенно) все последующие, независимо от паузы между запросами. На 5.5 ситуация изменилась не в лучшую сторону: долгие запросы проскакивают уже после паузы в несколько минут. Очень сильно подозреваю, что связано это именно с кэшированием. Что на 5.1, что на 5.5 все настройки изначально стояли по умолчанию, запрос SHOW VARIABLES LIKE "query_cache_size" в обоих случаях возвращает 0, но поскольку на 5.1 проблем не было, особо не заморачивался этим вопросом. На 5.5 попробовал изменить в my.ini параметр query_cache_size на 128... после перезапуска сервера запрос по-прежнему возвращает 0.
Вопросов собственно два:
1. C чем связано разное поведение одного и того же запроса на разных версиях сервера, и в кэшировании ли здесь дело?
2. Как все-таки включить кэш запросов?

прогоните вот эту утилитку:
http://mysqltuner.com/
и посмотрите что она скажет.
...
Рейтинг: 0 / 0
17.04.2016, 23:31
    #39217681
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование запросов MySQL 5.1 vs 5.5
javajdbcпрогоните вот эту утилитку:
http://mysqltuner.com/
и посмотрите что она скажет.
"mysqltuner.pl не является внутренней или внешней командой, исполняемой программой или пакетным файлом" - она скажет ) В данном случае,это к лучшему.
там же windows.
...
Рейтинг: 0 / 0
17.04.2016, 23:47
    #39217682
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование запросов MySQL 5.1 vs 5.5
netwindjavajdbcпрогоните вот эту утилитку:
http://mysqltuner.com/
и посмотрите что она скажет.
"mysqltuner.pl не является внутренней или внешней командой, исполняемой программой или пакетным файлом" - она скажет ) В данном случае,это к лучшему.
там же windows.


https://mysqltuner.codeplex.com/

...понятно что вы (с Миксофтом, МастеромЗивом, СкареКроу етц) собаки сьели
на настройках...и вам лично этот турнер нафик не сдался...
но вы же не будете разбиратся детально и расчитывать человеку
все буфера... а так будет хоть какой-то обший подход....
кроме буферов там много мелочей, типа секюрити, аптайм,
количество конекций, распределиние рид-райт и кучи всего...

...понятно что надо аккуратно и с пониманием подкручивать настройки
по указанию mysqlturner...., но это уже ко всему относится, включая и к вашим
профессииональным советам...
...
Рейтинг: 0 / 0
18.04.2016, 00:27
    #39217689
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование запросов MySQL 5.1 vs 5.5
MasterZivA-MaR2. Как все-таки включить кэш запросов?

тебе наоборот это говно надо ВЫКЛЮЧАТЬ.
это не кэш данных, это кэш результатов выполнения запросов, абсолютно ненужная и вредная хрень.

Ругают его в основном за неудачный дизайн именно для высококонкурентного окружения.
А POS-терминал обслуживает одного человека по определению.
Неплохо зайдет query_cache, я считаю.
...
Рейтинг: 0 / 0
18.04.2016, 07:41
    #39217718
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование запросов MySQL 5.1 vs 5.5
В данном конкретном случае, пожалуй, соглашусь c MasterZiv-ом.
Ресурсы по памяти весьма ограничены и эти драгоценные мегабайты, имхо, лучше отдать в innodb_buffer_pool_size, чем на кэш результатов запросов.
...
Рейтинг: 0 / 0
18.04.2016, 11:45
    #39217944
A-MaR
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование запросов MySQL 5.1 vs 5.5
miksoft,
Полдня отработали, полет нормальный, во всяком случае тормоза на чтении ушли и стало также, как было на 5.1. Да, innodb_buffer_pool_size немного уменьшил до 160 (навскидку).
...
Рейтинг: 0 / 0
18.04.2016, 11:51
    #39217954
A-MaR
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование запросов MySQL 5.1 vs 5.5
javajdbc https://mysqltuner.codeplex.com/
Спасибо, качнул, полезная штука. Почему-то показал, что все таблицы фрагментированы, хотя база только 2 дня назад была развернута из скрипта, и часть таблиц не модифицируется в принципе.
...
Рейтинг: 0 / 0
18.04.2016, 11:57
    #39217965
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование запросов MySQL 5.1 vs 5.5
A-MaR,

Покажите что он показал, даже интересно.
...
Рейтинг: 0 / 0
18.04.2016, 13:08
    #39218081
A-MaR
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование запросов MySQL 5.1 vs 5.5
miksoftA-MaR,
Покажите что он показал, даже интересно.
Это с того POS-a, на котором я боролся с тормозами (попутал немного, MySQL действительно 5.6.3, переставил в ходе экспериметнов перед тем как написать первый пост в этой теме):
Assuming 512 MB of physical memory
Assuming the same amount of swap space as this computer
Currently running supported MySQL version 5.6.3-m6
Archive Engine Installed
Berkeley DB Engine Not Installed
Federated Engine Not Installed
InnoDB Engine Installed
ISAM Engine Not Installed
NDBCLUSTER Engine Not Installed
Data in InnoDB tables: 11M (Tables: 112)
Total fragmented tables: 112
All database users have passwords assigned
Up for: 6h 42m 22s (33K q [1,000 qps], 2K conn, TX: 18M, RX: 5M)
Reads / Writes: 89% / 11%
Total buffers: 176,0M global + 852,0K per thread (100 max threads)
Maximum possible memory usage: 259,2M (50% of installed RAM)
Slow queries: 0% (0/33K)
System.FormatException: Input string was not in a correct format.
at System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt)
at MySqlTuner.TuningCalculator.MySqlStats() in c:\Documents and Settings\Administrator\My Documents\Source\mysqltuner\MySQLTuner\TuningCalculator.cs:line 691
at MySqlTuner.TuningCalculator.Calculate(MySqlServer server) in c:\Documents and Settings\Administrator\My Documents\Source\mysqltuner\MySQLTuner\TuningCalculator.cs:line 154


Это с наиболее загруженного, на котором видимых проблем нет:
Assuming 1024 MB of physical memory
Assuming the same amount of swap space as this computer
Currently running supported MySQL version 5.1.53-community
Archive Engine Installed
Berkeley DB Engine Not Installed
Federated Engine Not Installed
InnoDB Engine Installed
ISAM Engine Not Installed
NDBCLUSTER Engine Not Installed
Data in InnoDB tables: 205M (Tables: 112)
Total fragmented tables: 112
All database users have passwords assigned
Up for: 14h 38m 20s (47K q [0,000 qps], 8K conn, TX: 222M, RX: 5M)
Reads / Writes: 84% / 16%
Total buffers: 204,0M global + 896,0K per thread (100 max threads)
Maximum possible memory usage: 291,5M (28% of installed RAM)
Slow queries: 1% (1/47K)
System.FormatException: Input string was not in a correct format.
at System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt)
at MySqlTuner.TuningCalculator.MySqlStats() in c:\Documents and Settings\Administrator\My Documents\Source\mysqltuner\MySQLTuner\TuningCalculator.cs:line 691
at MySqlTuner.TuningCalculator.Calculate(MySqlServer server) in c:\Documents and Settings\Administrator\My Documents\Source\mysqltuner\MySQLTuner\TuningCalculator.cs:line 154
...
Рейтинг: 0 / 0
18.04.2016, 13:13
    #39218088
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование запросов MySQL 5.1 vs 5.5
A-MaR2K connОткуда так много коннектов на POS-терминале?
...
Рейтинг: 0 / 0
18.04.2016, 13:15
    #39218091
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование запросов MySQL 5.1 vs 5.5
A-MaRMy Documents\Source\mysqltuner\MySQLTuner\TuningCalculator.cs:line 691


а, так это даже не тот оригинальный скрипт на perl, а какая-то подделка ? Ну точно надо запретить.
...
Рейтинг: 0 / 0
18.04.2016, 13:34
    #39218108
A-MaR
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кэширование запросов MySQL 5.1 vs 5.5
miksoftA-MaRпропущено...
Откуда так много коннектов на POS-терминале?
2К - это надеюсь общее число коннектов с момента старта, а не активных в данный момент? Тогда все логично: параллельно с основным приложением работает еще сервис, который выполняет обмен данными с учетной системой и отключается от базы после каждого сеанса.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Кэширование запросов MySQL 5.1 vs 5.5 / 25 сообщений из 33, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]