|
|
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
Подскажите, гуру, пожалуйста, не сталкивался ли кто-нибудь с таким странным явлением. MySQL начинает сильно тормозить при одновременном выполнении нескольких запросов, при чём чем больше потоков одновременно выполняют выборки данных, тем сильнее тормозят запросы. Это было бы естественно, если бы было обращение к одним и тем же таблицам, или был бы дефицит ресурсов. Но у меня идут циклические запросы к разным таблицам и даже к разным базам данных. На сервере 8 ядер и 24 гига памяти, Win2008R2. При этом когда в единственном потоке запрос исполняется за 1-2 секунды, то при одновременном выполнении трех-четырёх потоков время выполнения тех же запросов вырастает до 20-30 и более секунд. Запросы висят в статусе Copying to tmp table. Что бы это значило? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2014, 21:56:44 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
TvolodЗапросы висят в статусе Copying to tmp tableсоздают временные таблицы на диске а диск-то у вас, в отличие от ядер процессора, наверняка один... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2014, 06:04:24 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
Tvolod, Смотрите средний размер времянок и их одновременное количество. Тем самым вычисляете размер кучи в памяти под времянки. Устанавливаете 2(две!) переменных в это или большее значение: tmp_table_size = max_heap_table_size = значение. Наименования переменных лучше уточнить в доках. Но они обе и вместе должны иметь это количество памяти. Иначе будет выделено по меньшей величине. Далее смотрите насколько ситуация улучшилась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2014, 09:17:45 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы! tanglirсоздают временные таблицы на диске а диск-то у вас, в отличие от ядер процессора, наверняка один... Нет, если бы была работа с диском, то статус был бы: Copying to tmp table on disk http://dev.mysql.com/doc/refman/5.1/en/general-thread-states.html А так идёт работа с памятью. Кроме того, если посмотреть show status, то видим: авторCreated_tmp_disk_tables 0 Created_tmp_files 0 Created_tmp_tables 0 Arhat109Смотрите средний размер времянок и их одновременное количество. Не подскажете, где это посмотреть? Или имеются ввиду временные таблицы, которые создаёт пользователь? Они микроскопические, и процесс точно не висит в момент их создания. Arhat109Устанавливаете 2(две!) переменных в это или большее значение: tmp_table_size = max_heap_table_size = значение. Наименования переменных лучше уточнить в доках. Но они обе и вместе должны иметь это количество памяти. Иначе будет выделено по меньшей величине. У меня сейчас такие значения: авторmax_connections=10 tmp_table_size=16000M max_heap_table_size=16000M key_buffer_size=22000M read_buffer_size=1024M read_rnd_buffer_size=512M sort_buffer_size=512M join_buffer_size=16M default-storage-engine=MYISAM Не помогает. Кстати, при этом по монитору ресурсов использование памяти MySQL при этом 4-5 гигов. Редко до 6 увеличивается. Диски практически не работают на чтение, т.к. файлы таблиц закешировал Windows и вся работа идёт через системный кеш. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2014, 10:31:26 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
Tvolod, Пас. :) Самому интересно, что напишут коллеги. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2014, 11:21:19 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
explain? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2014, 11:40:59 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
TvolodНа сервере 8 ядермусклю точно все 8 разрешено использовать? что-то ничего другого не придумывается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2014, 11:45:54 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
TvolodArhat109Смотрите средний размер времянок и их одновременное количество. Не подскажете, где это посмотреть? Или имеются ввиду временные таблицы, которые создаёт пользователь? Они микроскопические, и процесс точно не висит в момент их создания. тут имеются ввиду неявные временные таблицы, создание которых обусловлено обработкой запросов - group by, union и тд. авторПодскажите, гуру, пожалуйста, не сталкивался ли кто-нибудь с таким странным явлением. MySQL начинает сильно тормозить при одновременном выполнении нескольких запросов, при чём чем больше потоков одновременно выполняют выборки данных, тем сильнее тормозят запросы. Вот что тут странного ? Запросов много, а mysql у вас один. Ресурсы ограничены не только числом ядер (половина из которых еще и HT), но и памятью и диском. Разве не очевидно, что нужно просто уменьшить объем работы выполняемой в каждом запросе ? explain покажет что именно делает mysql в этих запросах и как изменится этот объем по мере переписывания запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2014, 11:54:47 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
>Ресурсы ограничены не только числом ядер (половина из которых еще и HT) В стартпосте речь идёт о трёх-четырёх запросах на 8 ядрах >но и памятью ну хз какие там должны быть запросы, чтобы четырём 24 гектар не хватило... особенно если по одному они всего секунду работают >и диском ну разве что чтение подводит, это может быть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2014, 12:17:28 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
tanglirTvolodНа сервере 8 ядермусклю точно все 8 разрешено использовать? что-то ничего другого не придумывается. А каким параметром это регулируется? Судя по всему используется ровно столько ядер, сколько рабочих потоков MySQL в данный момент обслуживает. Уже не первый день экспериментирую - всё четко, запускаю новый скрипт с запросами - подключается новое ядро. правда не на 100% занято. На 80 где-то. Вот такая картина при трёх скриптах: ScareCrowexplain? Explain ничего не даст, ибо если запускать запрос один, или серию таких запросов в один поток, то всё в порядке. Время выполнения совершенно приемлемое (1-2 секунды), план нормальный (по индексам), на сколько может быть нормальный план по таблицам о 30-40 миллионов записей. Проблема именно с тем, что при увеличении количества потоков время выполнения каждого запроса экспоненциально (от количества потоков) увеличивается. Если интересно, вот примерно такие запросы идут: Поверите, что Explain ничего не даст? :) netwindВот что тут странного ? Запросов много, а mysql у вас один. Ресурсы ограничены не только числом ядер (половина из которых еще и HT), но и памятью и диском. Я точно так же рассуждал, но вот состояние сервера в момент этой работы. Где тут видно, что чего-то не хватает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2014, 12:29:51 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
tanglir>Ресурсы ограничены не только числом ядер (половина из которых еще и HT) В стартпосте речь идёт о трёх-четырёх запросах на 8 ядрах >но и памятью ну хз какие там должны быть запросы, чтобы четырём 24 гектар не хватило... особенно если по одному они всего секунду работают >и диском ну разве что чтение подводит, это может быть ну вот я и перечитываю первый пост : 1 запрос за 2 секунды, но 4 запроса за 20 секунд. Да, в параллельных вычислениях у компьютеров линейный рост производительности частенько не наблюдается. Почему это вдруг стало странностью? Это обычное явление, если программист не продумал масштабирование специально. Кеш-то на все ядра ограничен. Ширина шины обмена ограничена и тд и тп. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2014, 12:46:38 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
авторshingle во-первых, сеонизаторы должны страдать. и конечно же sql-база не место для обработки текстов. авторЯ точно так же рассуждал, но вот состояние сервера в момент этой работы. Где тут видно, что чего-то не хватает? и я не вижу. однако, это не означает что на картинке все возможные показатели учтены. если вас лично вместо работы над алгоритмом каждые 15 минут заставлять отвлекаться бумагу в принтере менять, забывая каждый раз на чем вы остановились (аналогия с кешем внутри процессора), много вы эти говносайтов склепать успеете в день? Вот если нанять двух человек, то один будет бумагу в принтере менять, а другой сайты клепать - это называется действительно параллельная архитектура. авторselect no_cache чтобы использовать эту конструкцию в здравом уме в приложении нужны серьезные причины. я сильно сомневаюсь что они были. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2014, 12:58:48 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
netwindКеш-то на все ядра ограничен. Ширина шины обмена ограничена и тд и тп. Имеется ввиду кеш процессора или кеш в оперативке? Как видно по картинкам оперативки на всё про всё прекрасно хватает. Про шины обмена с памятью тоже думал, но... там же другие порядки скоростей, нежели скорость работы дисков. По идее, если все необходимые данные уже загружены в память, то дальше должен лопатить их достаточно быстро, иначе зачем 8 ядер в процессоре, если скорости обмена данных хватает только на загрузку 1-2? Так же не понятно экспоненциальное, а не линейное падение производительности. Если ты за 1-2 секунды обрабатываешь 1 запрос, то при трех одновременных (если подгрузка данных и их обработка идёт последовательно) должно быть 3-6 секунд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2014, 13:02:36 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
Tvolod Explain ничего не даст , ибо если запускать запрос один, или серию таких запросов в один поток, то всё в порядке. Время выполнения совершенно приемлемое (1-2 секунды), план нормальный (по индексам)Не факт. Ведь откуда-то взялись SQL_NO_CACHE и STRAIGHT_JOIN в запросах? Да и время не такое уже приличное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2014, 13:06:28 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
netwindавторshingle во-первых, сеонизаторы должны страдать. и конечно же sql-база не место для обработки текстов. Во-первых, это поиск дублирующихся текстов (или фото) в рамках одного сайта. Во-вторых, там нет ни одного текстового поля. Это индексы. netwindмного вы эти говносайтов склепать успеете в день? У Вас неприятности в личной жизни? Я не понимаю, о чем эти эмоции и слова, которые не понятно к чему относятся? netwindавторselect no_cache чтобы использовать эту конструкцию в здравом уме в приложении нужны серьезные причины. я сильно сомневаюсь что они были.Если идёт циклическая обработка некого массива данных, и совершенно понятно, что запрос с такими же параметрами никогда не будет повторён, нормальный человек поставит no_cache, не нормальный будет умничать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2014, 13:10:43 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
Tvolodnetwindпропущено... во-первых, сеонизаторы должны страдать. и конечно же sql-база не место для обработки текстов. Во-первых, это поиск дублирующихся текстов (или фото) в рамках одного сайта. Во-вторых, там нет ни одного текстового поля. Это индексы. netwindмного вы эти говносайтов склепать успеете в день? У Вас неприятности в личной жизни? Я не понимаю, о чем эти эмоции и слова, которые не понятно к чему относятся? Это такая всем доступная аналогия о недостижимости линейного масштабирования при конкуренции за ресурсы. А неприятности у вас, если вы на это оскорбляетесь. По сути-то что ? И с чем связан такой серьезный подход к поиску подобных текстов ? Если не занимаетесь сеонизаторством - выкиньте это, перепишите на подсчет хешей от нормализированного текста. netwindпропущено... чтобы использовать эту конструкцию в здравом уме в приложении нужны серьезные причины. я сильно сомневаюсь что они были.Если идёт циклическая обработка некого массива данных, и совершенно понятно, что запрос с такими же параметрами никогда не будет повторён, нормальный человек поставит no_cache, не нормальный будет умничать... Я высказываю личные обобщения исходя из опыта наблюдений за разными сайтами. Хорошо, что это циклическая одноразовая обработка. Это и есть серьезные причины. Значительно чаще люди не понимают зачем это нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2014, 13:27:14 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
netwindА неприятности у вас, если вы на это оскорбляетесь. Я просто не понимаю, почему в технические вопросы нужно приплетать своё отношение к якобы (потому что Вы меня не знаете) автору и его якобы занятиям. Собственно, да, описанная в топике проблема для меня неприятность :), ибо потрачена куча времени на поиск решения. netwindИ с чем связан такой серьезный подход к поиску подобных текстов ? Если не занимаетесь сеонизаторством - выкиньте это, перепишите на подсчет хешей от нормализированного текста. Я не очень понял, при чем тут сеонизаторство. Шинглы же и есть хеши от кусков нормализованного текста, как я это понимаю. Или, кстати, нормализованных и приведённых к шинглам фото. Подход не серьёзный, а нормальный. Если на сайте куча текстов и фотографий, публикуемых пользователями, то дубли и того и другого, а так же изменённые дубли, являются проблемой. Народ хочет видеть чистые сайты, а не говносайты. :) В любом случае проблема проявляется на любом классе задач (у меня их много) которые связаны с обработкой больших массивов данных. netwindХорошо, что это циклическая одноразовая обработка. Это и есть серьезные причины. Значительно чаще люди не понимают зачем это нужно. Спасибо что приняли аргумент! Извините за резкость - вынудили. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2014, 13:47:40 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
авторПодход не серьёзный, а нормальный. Если на сайте куча текстов и фотографий, публикуемых пользователями, то дубли и того и другого, а так же изменённые дубли, являются проблемой. Народ хочет видеть чистые сайты, а не говносайты. :) В любом случае проблема проявляется на любом классе задач (у меня их много) которые связаны с обработкой больших массивов данных. А кто эти дубли создает ? Да всех забаньте на этапе регистрации. Если не пытаться искусственно и экспоненциально увеличивать число фактов в базе, не разбивать на шинглы, то и проблемы не будут экспоненциально расти. Это применение нетипично для субд. Неудивительно что проблемы есть. Во всех субд есть специальные типы полнотекстовых индексов, какие-то мало кому полезные функции типа soundex() и чтобы хоть как-то иметь с этим дело. Может все данные в какой-нибудь движок типа sphinx выгружать ? их много. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2014, 14:03:59 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
netwindА кто эти дубли создает ? Да всех забаньте на этапе регистрации. Пользователи и создают. Умышленно и не умышленно. Есть, например, сайт объявлений. Человеку нужно забить своими текстами первую страницу раздела - он и постит их немного модифицированные. То же самое с фотографиями. Есть сайт куда можно выгружать фото. Есть такое на сайте или нет - понять можно только достаточно сложными вычислениями. Здесь не обойтись хешем файла, если хотим искать не точное совпадение, а находить даже немного модифицированные (обрезанные, отресайзенные или отфотошопленные) фотографии. Непосредственно при загрузке фото и текста есть только быстрая проверка на полное или почти полное совпадение. А чтобы определить похожесть с какой-то вероятностью, приходится на отдельном серваке по расписанию лопатить гигабайтные таблицы. Это работает хорошо. Есть только проблема в том, что подобных задач несколько, и хочется их параллельно выполнять. netwindВо всех субд есть специальные типы полнотекстовых индексов, какие-то мало кому полезные функции типа soundex() и чтобы хоть как-то иметь с этим дело. Не пробовал. Сильно сомневаюсь, что через soundex() можно определить похожесть именно текстов, а не "кошка - ложка". Будет время, побалуюсь. В любом случае к фото это не применимо. А есть ещё задачи геолокации и взаимной привязки географических объектов, областей... А есть ещё куча других игрушек. И всё на той же машине. :) netwindМожет все данные в какой-нибудь движок типа sphinx выгружать ? их много. Ну, это решение понятно. Но придётся ещё данные туда-сюда перекачивать/конвертировать. Но не хочется сразу капитулировать перед проблемой. По крайней мере пока она не понятна. Может всё-таки как-то мускул заставить работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2014, 14:33:24 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
группировка по ID это новое слово в теории баз данных. ваши запросы кривее бумеранга. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2014, 14:33:26 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
ну тоесть они тупо переливают во времянки декартово произведение всех таблиц перечисленных в запросе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2014, 14:34:37 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
TvolodnetwindА кто эти дубли создает ? Да всех забаньте на этапе регистрации. Пользователи и создают. Умышленно и не умышленно. Есть, например, сайт объявлений. Человеку нужно забить своими текстами первую страницу раздела - он и постит их немного модифицированные. То же самое с фотографиями. Есть сайт куда можно выгружать фото. Есть такое на сайте или нет - понять можно только достаточно сложными вычислениями. Здесь не обойтись хешем файла, если хотим искать не точное совпадение, а находить даже немного модифицированные (обрезанные, отресайзенные или отфотошопленные) фотографии. Непосредственно при загрузке фото и текста есть только быстрая проверка на полное или почти полное совпадение. А чтобы определить похожесть с какой-то вероятностью, приходится на отдельном серваке по расписанию лопатить гигабайтные таблицы. Это работает хорошо. Есть только проблема в том, что подобных задач несколько, и хочется их параллельно выполнять. Два сервака. Три сервака. Но для обычного сайта это просто вопрос политики администрирования. Раз люди делают это со специальным вредным умыслом, то намного проще просматривать и банить. Не создавать в базе этот гигантский набор фактов буквально из ничего. Конечно, некоторые хипстеры, считают что сайт должен сам себя администрировать. Но тогда им не надо ожидать, что обычные базы будут хорошо работать в необычном применении. Не пробовал. Сильно сомневаюсь, что через soundex() можно определить похожесть именно текстов, а не "кошка - ложка". Дак и нельзя. Это был пример инородной и практически бесполезной функции. Она есть, но никто ее не использует. Будет время, побалуюсь. В любом случае к фото это не применимо. А есть ещё задачи геолокации и взаимной привязки географических объектов, областей... А есть ещё куча других игрушек. И всё на той же машине. :) netwindМожет все данные в какой-нибудь движок типа sphinx выгружать ? их много. Ну, это решение понятно. Но придётся ещё данные туда-сюда перекачивать/конвертировать. Но не хочется сразу капитулировать перед проблемой. По крайней мере пока она не понятна. Может всё-таки как-то мускул заставить работать. Здесь нет никакой особенной проблемы. производительность не масштабируeтся линейно по числу ядер и это не новость. Если план запроса предполагает генерирование большой временной таблицы из и так большого числа фактов, почему бы этим запросам выполняться быстро ? Можно улучшить ситуацию если разобраться с этими запросами, но вообще-то ничего странного не происходит. Ну может быть в этой конфигурации негативные эффекты возникают из-за наличия NUMA или PAE, но скорее всего их нет. У вас современный windows на какой-то массовой хостерской платформе ведь ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2014, 18:10:24 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
netwindКонечно, некоторые хипстеры, считают что сайт должен сам себя администрировать. Но тогда им не надо ожидать, что обычные базы будут хорошо работать в необычном применении. По-вашему предел возможностей MySQL - это прайс-лист загрузить и гуэстбук замутить? В чем необычность задач, я не очень понимаю. Не метафизически: "не предназначено, мол", а физически, т.е. имеются (объективно) следующие ограничения... и мы их можем увидеть/пощупать на приведённом примере там то и там то... netwindЗдесь нет никакой особенной проблемы. производительность не масштабируeтся линейно по числу ядер и это не новость. Опять таки, это просто общее утверждение, пусть даже и верное, я же не знаю. Физика то в чём? Почему это так на данном конкретном приведённом мной весьма простом и измеримом примере. netwindЕсли план запроса предполагает генерирование большой временной таблицы из и так большого числа фактов, почему бы этим запросам выполняться быстро? При параллельном выполнении нескольких запросов план меняется, относительно "сольного" выполнения? Вряд ли. Тогда почему ему исполняться на порядок медленнее? Ещё раз: ресурсов (процессорной мощности и оперативки), более чем достаточно. Другие не используются. Ну я же показал на картинках, что сервер вовсе не напрягается при выполнении этих трёх задач. Возможно, есть другие измерители, на которые нужно смотреть - тогда буду признателен за подсказку. В моём идеальном мире запросы должны выполняться с той же скоростью, что и раньше пока не станут где-то друг с другом конкурировать (взаимные блокировки, чтение с диска, разделение процессорного времени и т.п.). А если нет конкуренции за ресурсы, то видимых причин снижать на порядок скорость выполнения я не вижу. Ведь если бы запросы шли не одновременно, а друг за другом (в теории по крайней мере), они бы выполнились за линейно возросшее время (в теории по крайней мере). netwindМожно улучшить ситуацию если разобраться с этими запросами, но вообще-то ничего странного не происходит. Да вопрос то не в конкретных запросах, а в том что происходит при параллельных вычислениях и почему. С конкретными запросами можно разобраться, хотя особых проблем в них я не вижу. Какой-то оптимизацией какие-то проценты можно выиграть, но в целом всё равно поиск по многомиллионным таблицам. Правда по индексам. Я упёрся в эту проблему потому что мне удобнее её решить на уровне сервера (если получится), чем переписывать логику. Тем более что явление проявляется на любых циклических тяжёлых запросах, а они на этой машинке всегда будут тяжёлыми и циклическими – для того и покупалась. netwindНу может быть в этой конфигурации негативные эффекты возникают из-за наличия NUMA или PAE, но скорее всего их нет. Погуглил эти термины... NUMA точно нет, т.к. обычная стандартная машинка. http://www.nix.ru/autocatalog/nix_computers/S5000B_S5365LNi_Core_i74790_16_SATA_RAID_190793.html netwindУ вас современный windows на какой-то массовой хостерской платформе ведь ? Не очень массовая. В антресоли над туалетом пылится. :) Серверная Windows 2008R2 64 бит, родная, не ломанная. MySQL 5.5.23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2014, 23:14:33 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
Я вот тут подумал, чтобы было интереснее, может учредить приз за решение проблемы, или хотя бы за строгое научное обоснование, что её решить нельзя (за подсказку, где ограничение и как его померить). Ставлю большое пиво (в натуральном или электронно-денежном выражении) тому кто реально поможет понять что происходит с MySQL, а не с якобы неправильными запросами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2014, 23:21:43 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
Tvolod, можете показать open_files_limit из конфига(или show variables) и open_files из статуса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2014, 00:22:38 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
Veshchiy Oleg, open_files в конфиге не задан. open_files_limit 2566 Есть версии? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2014, 00:28:03 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
Tvolod, Уверенности нет, но сталкивался с тормозами при ограничении на открытие дескрипторов... С чем была связана моя ситуация уже не помню, но помогало "расширение границ" по количеству открываемых файлов. Прошу учесть, что моя ситуация была на CentOS 5.6, а не на Windows. По этому могут быть существенные отличия в работе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2014, 00:35:38 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
Tvolod, из статуса меня интересовали значения Open_files в момент выполнения нескольких запросов и Opened_files просто ради интереса... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2014, 00:39:56 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
TvolodnetwindКонечно, некоторые хипстеры, считают что сайт должен сам себя администрировать. Но тогда им не надо ожидать, что обычные базы будут хорошо работать в необычном применении. По-вашему предел возможностей MySQL - это прайс-лист загрузить и гуэстбук замутить? В чем необычность задач, я не очень понимаю. Не метафизически: "не предназначено, мол", а физически, т.е. имеются (объективно) следующие ограничения... и мы их можем увидеть/пощупать на приведённом примере там то и там то... Дело не в пределе возможностей, а в том как обычно используются рсубд. Используешь как все - гуглишь ответ на любую проблему. А в большинстве случаев они даже не возникают. Хочешь необычного - ты один на один с проблемой. netwindЗдесь нет никакой особенной проблемы. производительность не масштабируeтся линейно по числу ядер и это не новость. Опять таки, это просто общее утверждение, пусть даже и верное, я же не знаю. Физика то в чём? Почему это так на данном конкретном приведённом мной весьма простом и измеримом примере. Но вы с ними согласны ? За конкретное это вам придется самолет и командировку оплачивать. Пивом не обойтись. netwindЕсли план запроса предполагает генерирование большой временной таблицы из и так большого числа фактов, почему бы этим запросам выполняться быстро? При параллельном выполнении нескольких запросов план меняется, относительно "сольного" выполнения? Вряд ли. Тогда почему ему исполняться на порядок медленнее? Ещё раз вот именно, еще раз повторюсь: netwindесли вас лично вместо работы над алгоритмом каждые 15 минут заставлять отвлекаться бумагу в принтере менять, забывая каждый раз на чем вы остановились (аналогия с кешем внутри процессора), много вы эти говносайтов склепать успеете в день? автор: ресурсов (процессорной мощности и оперативки), более чем достаточно. Другие не используются. Ну я же показал на картинках, что сервер вовсе не напрягается при выполнении этих трёх задач. Возможно, есть другие измерители, на которые нужно смотреть - тогда буду признателен за подсказку. В моём идеальном мире запросы должны выполняться с той же скоростью, что и раньше пока не станут где-то друг с другом конкурировать (взаимные блокировки, чтение с диска, разделение процессорного времени и т.п.). А если нет конкуренции за ресурсы, то видимых причин снижать на порядок скорость выполнения я не вижу. Ведь если бы запросы шли не одновременно, а друг за другом (в теории по крайней мере), они бы выполнились за линейно возросшее время (в теории по крайней мере). У вас задача поиска всего среди всего - то есть, интенсивный обмен с памятью, который осуществляется через кеш процессора. Вот этого ресурса при параллельной архитектуре и не хватает. И соседи постоянно забивают его другими данными. Наверное, какой-то из профайлеров в состоянии снять метрики cache miss, но это собирать mysql специально надо. Мне кажется это и так достаточно здравое объяснение. netwindНу может быть в этой конфигурации негативные эффекты возникают из-за наличия NUMA или PAE, но скорее всего их нет. Погуглил эти термины... NUMA точно нет, т.к. обычная стандартная машинка. http://www.nix.ru/autocatalog/nix_computers/S5000B_S5365LNi_Core_i74790_16_SATA_RAID_190793.html netwindУ вас современный windows на какой-то массовой хостерской платформе ведь ? Не очень массовая. В антресоли над туалетом пылится. :) Я бы все же убедился как-нибудь конкретнее. Формально в википедии написано что Haswell EP таки поддерживает NUMA. но раз уж это "серийный" сервер из nix, наверное не стоит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2014, 00:54:01 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
Veshchiy Oleg, Open_files 67 Opened_files 11773 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2014, 00:55:24 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
Tvolod, я так думаю надо вот с этой штукой разобраться https://perf.wiki.kernel.org/index.php/Tutorial, в линуксе запустить mysqld, налить тестовых данных и как-то снять счетчики cache miss автор It provides a list of events to measure micro-architectural events such as the number of cycles, instructions retired, L1 cache misses and so on Не говоря о том, что линуксе может просто внезапно отпустить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2014, 01:04:39 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
ну вот как-то вроде считает у меня, где 13357 - pid процесса mysqld : автор perf stat -e L1-dcache-load,L1-dcache-load-misses,L1-dcache-stores,L1-dcache-store-misses -p 13357 ^C Performance counter stats for process id '13357': 1,109,824 L1-dcache-load 201,929 L1-dcache-load-misses # 18.19% of all L1-dcache hits 372,766 L1-dcache-stores 23,616 L1-dcache-store-misses 9.512196166 seconds time elapsed шо бы это значило ответ где-то здесь http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-software-developer-vol-3b-part-2-manual.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2014, 01:22:48 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
netwindTvolodnetwindЗдесь нет никакой особенной проблемы. производительность не масштабируeтся линейно по числу ядер и это не новость. Опять таки, это просто общее утверждение, пусть даже и верное, я же не знаю. Физика то в чём? Почему это так на данном конкретном приведённом мной весьма простом и измеримом примере. Но вы с ними согласны ? С тем что оно функция зависимости времени выполнения от числа задач и числа процессоров нелинейна это очевидно. Мир вообще в общем не линеен. :) Вопрос в том, в какой зоне нелинейной кривой мы находимся. Я лишь предполагал, что при выполнении числа задач меньшем числа процессоров и избытке памяти нелинейность должна состоять в том, что роста времени выполнения не должно быть вообще. Если соотношение обратное, то да, система как-то нелинейно должна деградировать. netwindЗа конкретное это вам придется самолет и командировку оплачивать. Пивом не обойтись. Была бы гарантия результата, можно было бы и рассмотреть билет на поезд. :) Да и зачем ехать, когда есть удалённый доступ, если нужно. netwindУ вас задача поиска всего среди всего - то есть, интенсивный обмен с памятью, который осуществляется через кеш процессора. Вот этого ресурса при параллельной архитектуре и не хватает. И соседи постоянно забивают его другими данными. Не буду врать, плохо себе представляю работу MySQL с кешем процессора (тем более многоуровневым). Вернее даже наоборот, работу процессора и его многоуровневого кеша с MySQL данными. Возможно, и не должен он пропускать через себя весь объём обрабатываемых данных или даже индексов... netwindНаверное, какой-то из профайлеров в состоянии снять метрики cache miss, но это собирать mysql специально надо. Мне кажется это и так достаточно здравое объяснение. По крайней мере оно логично и конкретно. Спасибо! Надо будет почитать. Кстати, после перезагрузки сервера эффект существенно уменьшился. Он по-прежнему есть, но стало в разы лучше. До этого менял параметры мускула и только рестартовал его. Будем посмотреть, может быть это софтверный глюк. Кто его разберёт... :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2014, 10:04:08 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
Кстати, после перезагрузки сервера эффект существенно уменьшился. Он по-прежнему есть, но стало в разы лучше. До этого менял параметры мускула и только рестартовал его. Будем посмотреть, может быть это софтверный глюк. Кто его разберёт... :( Может быть память была как-то занята другими таблицами и задачами. А при перезагрузке еще не успела. Если у вас myisam, то попробуйте еще myisam_use_mmap=1. Переход на innodb в данной ситуации может улучшить работу с данными в памяти, потому что данные точно залягут в пул innodb. Ну и подумать над планами запросов всегда полезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.12.2014, 12:01:53 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
netwindTvolodКстати, после перезагрузки сервера эффект существенно уменьшился. Он по-прежнему есть, но стало в разы лучше. До этого менял параметры мускула и только рестартовал его. Будем посмотреть, может быть это софтверный глюк. Кто его разберёт... :( Может быть память была как-то занята другими таблицами и задачами. А при перезагрузке еще не успела. Похоже, наврал. Скорее всего просто были вычисления над лёгкими областями данных. Дополнительные опыты не подтвердили, что перезагрузка влияет. Скорее наоборот, пока система не закеширует большую часть данных всё идёт ещё хуже. netwindЕсли у вас myisam, то попробуйте еще myisam_use_mmap=1. Попробовал. Несколько дней покрутилось с этой опцией. Стало или хуже, или по крайней мере не лучше. Во всяком случае монитор ресурсов показывал постоянные обращения к диску в течение 1.5 суток, пока система всё-таки не закешировала большие таблицы. netwindПереход на innodb в данной ситуации может улучшить работу с данными в памяти, потому что данные точно залягут в пул innodb. А можете пояснить, за счёт чего может улучшить? Если у меня MyISAM через пару часов работы и так все системой (не MySQL!) полностью загружаются в оперативку. Просто проблемно этот опыт поставить. Нужно конвертировать таблицы, а их каждые сутки бекап подменяет... netwindНу и подумать над планами запросов всегда полезно. Ну вот, например, простейший вариант: Код: sql 1. 2. 3. 4. 5. Ищем похожие фото по таблице о 12.5 миллионах записей. Каждое фото характеризуется 100 числами. Алгоритм работает изЮмительно... Табличка проще некуда: Код: sql 1. 2. План лучше некуда: Код: sql 1. 2. 3. 4. 5. 6. Но... До having count(*) >= 70 запрос может вернуть от сотни тысяч до нескольких миллионов строк данных. После от 0 до 10 строк. Вот и всё. Можете этот запрос улучшить? По-моему тут нечего улучшать. Работает секунду и меньше на одно фото (в сольном варианте), что полностью меня устраивает. При параллельном исполнении нескольких подобных запросов время может вырасти до 5 секунд. Другие запросы подобные этому, с той лишь разницей, что добавлены джойны дополнительных данных, участвующих в сортировке и отборе финальных результатов, + число строк в таблицах по 40-50 млн. Т.е. я снова хочу сказать, что нет проблем в самих запросах. Есть странная проблема в параллельном их выполнении, природа которой не очень понятна... :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2014, 00:46:56 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
TvolodnetwindЕсли у вас myisam, то попробуйте еще myisam_use_mmap=1. Попробовал. Несколько дней покрутилось с этой опцией. Стало или хуже, или по крайней мере не лучше. Во всяком случае монитор ресурсов показывал постоянные обращения к диску в течение 1.5 суток, пока система всё-таки не закешировала большие таблицы. netwindПереход на innodb в данной ситуации может улучшить работу с данными в памяти, потому что данные точно залягут в пул innodb. А можете пояснить, за счёт чего может улучшить? По определению. Так работает mmap - один из интерфейсов в ОС , про который неплохо было бы знать. Как и про кеш в процессоре. вместо того чтобы считывать блоки данных через системные вызовы постоянно, эти системные вызовы возникают лишь когда блоки не попадают в уже считанную память область проецируемого файла. Может и не ускорить запросы, которые использовали только лишь key_buffer. Во всяком случае не должно быть хуже. Но вместе вот с этим : Если у меня MyISAM через пару часов работы и так все системой (не MySQL!) полностью загружаются в оперативку. Просто проблемно этот опыт поставить. Нужно конвертировать таблицы, а их каждые сутки бекап подменяет... ..ситуация уже менее прозрачна. что там на что подменяется ? Другой механизм используется в innodb, но он похож. Блоки просто считываются в буфер и при достаточно большом объеме памяти работа происходит только с буфером без обращения к ОС. К несчастью, данные в innodb будут тупо больший размер в байтах занимать и прогноз дать нельзя. Я так подозреваю, все даже ухудшится. Ну вот, например, простейший вариант: [src sql] select M2.ImageID, count(*) as Cnt не читал, но заранее подход осуждаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2014, 01:50:43 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
netwind..ситуация уже менее прозрачна. что там на что подменяется ? Делается бекап свежих данных с удалённого сервера, и нужные для работы таблицы как есть заливаются для обработки через drop table - create table. На сервере MyISAM. Соответственно как минимум придётся парсить бекап файл и править create table. Не сложно, но без серьёзных аргументов не хочется это делать. netwind Я так подозреваю, все даже ухудшится. netwindНу вот, например, простейший вариант: [src sql] select M2.ImageID, count(*) as Cnt не читал, но заранее подход осуждаю. Просвятите, пожалуйста, что не так? Это как девушка тут сообщила: " группировка по ID это новое слово в теории баз данных "? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2014, 09:27:06 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
TvolodЭто как девушка тут сообщила: " группировка по ID это новое слово в теории баз данных "а с чего вы взяли, что scarecrow - девушка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2014, 10:40:08 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
tanglirTvolodЭто как девушка тут сообщила: " группировка по ID это новое слово в теории баз данных "а с чего вы взяли, что scarecrow - девушка? Фото в анкете. И советы... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2014, 11:09:09 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
TvolodФото в анкетеНе стоить верить всему, что видишь в интернете :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2014, 11:25:15 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
Tvolod Код: sql 1. Диск, поди, обычный HDD ? Тогда все логично - идет борьба за перемещение головок диска. tmp_table_size и max_heap_table_size какого размера? Попробуйте под эту табличку+запрос создать индексы (`Value`,`ImageID`) и (`ImageID`,`Value`). Потом сделайте ANALYZE TABLE `ImageMatrix`. И посмотрите на план и время выполнения запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2014, 12:42:31 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
miksoftTvolod Код: sql 1. Диск, поди, обычный HDD ? Тогда все логично - идет борьба за перемещение головок диска. tmp_table_size и max_heap_table_size какого размера? miksoft, на предыдущей странице эту версию обсуждали. tmp_table_size и max_heap_table_size по 16 гигов. Гораздо больше чем мускул реально использует. Максимум он дорастает до 6 гигов. Нагрузки на диски нет никакой, ибо винда кеширует все файлы используемых таблиц и индексов. miksoftПопробуйте под эту табличку+запрос создать индексы (`Value`,`ImageID`) и (`ImageID`,`Value`). Потом сделайте ANALYZE TABLE `ImageMatrix`. И посмотрите на план и время выполнения запроса. Хм... ну можно попробовать. Я правильно понимаю, что в этом случае мускул будет пользоваться только данными из индексов не обращаясь к самой таблице? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2014, 13:20:30 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
TvolodЯ правильно понимаю, что в этом случае мускул будет пользоваться только данными из индексов не обращаясь к самой таблице?он может воспользоваться только данными из индексов что он будет делать, надо смотреть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2014, 13:41:31 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
Tvolodtmp_table_size и max_heap_table_size по 16 гигов.SHOW VARIABLES LIKE 'tmp_table_size' и SHOW VARIABLES LIKE 'max_heap_table_size' это подтверждают? Как изменяются переменные Created_tmp_disk_tables и Created_tmp_tables после выполнения запроса? Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2014, 13:45:51 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
miksoftПопробуйте под эту табличку+запрос создать индексы (`Value`,`ImageID`) и (`ImageID`,`Value`). Потом сделайте ANALYZE TABLE `ImageMatrix`. И посмотрите на план и время выполнения запроса. Эксперименты заняли некоторое время. Код: sql 1. 2. 3. 4. 5. 6. Результат неплохой, хотя и не фантастический. Скорость примерно процентов на 10-15 выше. Большое спасибо за идею! Буду иметь ввиду. miksoftTvolodtmp_table_size и max_heap_table_size по 16 гигов.SHOW VARIABLES LIKE 'tmp_table_size' и SHOW VARIABLES LIKE 'max_heap_table_size' это подтверждают? Да. Код: plaintext 1. miksoftКак изменяются переменные Created_tmp_disk_tables и Created_tmp_tables после выполнения запроса? Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2014, 00:49:39 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
TvolodЭксперименты заняли некоторое время.А теперь как себя ведет параллельное выполнение нескольких запросов? которое "при одновременном выполнении трех-четырёх потоков время выполнения тех же запросов вырастает до 20-30 и более секунд" TvolodСудя по всему каждое выполнение запроса увеличивает Created_tmp_tables на единичку.Нет, это приборная погрешность. http://dev.mysql.com/doc/refman/5.5/en/server-status-variables.html#statvar_Created_tmp_tables Each invocation of the SHOW STATUS statement uses an internal temporary table and increments the global Created_tmp_tables value. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2014, 00:58:38 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
miksoftНет, это приборная погрешность. Не, не, не... погрешность я заметил и учел. Именно при циклическом выполнении данного запроса Created_tmp_tables увеличивается с каждым циклом. Да и куда ему деваться, если и в плане у него Using temporary , и в процессах он как и раньше чаще всего висит в статусе Copying to tmp table? miksoftTvolodЭксперименты заняли некоторое время.А теперь как себя ведет параллельное выполнение нескольких запросов? которое "при одновременном выполнении трех-четырёх потоков время выполнения тех же запросов вырастает до 20-30 и более секунд" Надо покрутить, но, полагаю, что так же. Просто влияние данного запроса чуть меньше (временнОе). А может и чуть больше, учитывая, что размер индексов теперь вдвое вырос. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2014, 01:20:47 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
Tvolodразмер индексов теперь вдвое выросЕсли таблица MyISAM, то всего лишь на треть - с 9 до 12 байтов на запись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2014, 02:55:27 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
Тем не менее результата нет. Переделал подобным образом индексы еще на одном запросе. В один поток вроде как быстрее выполняется. При многопоточном исполнении всё по-прежнему. Может даже ещё хуже. Точных замеров не получается сделать, т.к. на разных областях данных скорость разная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2015, 11:38:49 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
Tvolod, да что ж такое? не будет того результата, который вам нужен. попробуйте у mysql tmpdir на ramdrive вынести. Это может оказаться непросто для винды и возможно сожрет память навсегда ( не как в линуксе), но ускорить может. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2015, 12:09:50 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
netwindпопробуйте у mysql tmpdir на ramdrive вынести. Зачем? TvolodНагрузки на диски нет никакой, ибо винда кеширует все файлы используемых таблиц и индексов. netwindTvolod, да что ж такое? не будет того результата, который вам нужен. Ну мне б хотя б научно обоснованную трактовку, что происходит. Я б успокоился. :) А то хрен знает что... Отсюда и решения предлагаются хрен знает какие. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2015, 12:55:48 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
Виноват. На картинке не видно, что не пишет она ни разу на диск в tmpdir Ну раз Created_tmp_disk_tables 44 Created_tmp_files 0 то это так! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2015, 12:59:18 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
Tvolodnetwindпопробуйте у mysql tmpdir на ramdrive вынести. Зачем? Ну просто попробуйте. Например, в linux на практике накладные расходы на поддержку файлов в ramdrive меньше чем создание файлов на диске, даже если запись этих файлов буферизирована и идет без явного запроса на синхронизацию. netwindTvolod, да что ж такое? не будет того результата, который вам нужен. Ну мне б хотя б научно обоснованную трактовку, что происходит. Я б успокоился. :) А то хрен знает что... Отсюда и решения предлагаются хрен знает какие. :) Тут как раз все понятно. Перечитывайте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2015, 13:28:34 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
TvolodВиноват. На картинке не видно, что не пишет она ни разу на диск в tmpdir Ну раз Created_tmp_disk_tables 44 Created_tmp_files 0 то это так! так в документации написано же Created_tmp_disk_tables - The number of internal on-disk temporary tables created by the server while executing statements. может быть не пишет так интенсивно, чтобы это было заметно в мониторе ресурсов windows ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2015, 13:29:53 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
netwindCreated_tmp_disk_tables - The number of internal on-disk temporary tables created by the server while executing statements. может быть не пишет так интенсивно, чтобы это было заметно в мониторе ресурсов windows ? Это старые значения из предыдущего поста взял. Текущие, после перезагрузки винды неделю назад такие: авторCreated_tmp_disk_tables 0 Created_tmp_files 0 Created_tmp_tables 0 Это после нескольких сотен тысяч циклов запросов, постоянно висящих в статусе Copying to tmp table. Заметьте, не в copying to tmp table on disk ! Всё равно попробуйте? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2015, 14:55:53 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
Блин! Это SHOW STATUS Если SHOW GLOBAL STATUS то темповые таблицы, конечно есть: авторCreated_tmp_disk_tables 296 Created_tmp_files 0 Created_tmp_tables 4332526 Но всё равно, на многие сотни тысяч запросов триста дисковых таблиц. Это не то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2015, 15:05:35 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
ВСЁ! Проблема решена! Как и предполагалось, проблема не в мускуле, а в системе. Оказалось, что процессор не 8-ми, а 4-х ядерный. 8 ядер создаётся с помощью кривой технологии гипертрейдинга, которая и не давала нормально работать даже одному процессу, выделяя ему менее 1/8 процессорной мощности (70-80% одного виртуального ядра). После отключения гипертрейдинга в биосе на каждый процесс стало выделяться в аккурат 1/4 мощности, т.е. 100% одного реального ядра. Соответственно как в одиночном режиме запросы стали выполняться гораздо быстрее, так и при одновременном запуске до 4-х процессов скорость прекрасная и никакого взаимного влияния на скорость не наблюдается (конечно, после кеширования системой всех нужных таблиц). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2015, 22:52:10 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
Tvolod, Однако... про гипертрейдинг мне даже в голову не приходило... Случаем, вы не зацепили по дороге какие-нибудь опции, связанные с энергосбережением и турбобустом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2015, 00:06:17 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
автор Оказалось, что процессор не 8-ми, а 4-х ядерный. 8 ядер создаётся с помощью кривой технологии гипертрейдинга, которая и не давала нормально работать даже одному процессу, выделяя ему менее 1/8 процессорной мощности Чейто она кривая? Нормальная. Как была спроектирована, прямо так и работает . Это частный случай того, о чем я говорил - параллельные процессы не параллелятся потому что не параллелятся никогда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2015, 00:45:53 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
miksoftСлучаем, вы не зацепили по дороге какие-нибудь опции, связанные с энергосбережением и турбобустом? Не. Ещё друг, который подсказал про гипертрейдинг, советовал отключить DEP (предотвращение выполнения данных), но короткие опыты не показали, что это что-то дало. А отключение гипертрейдинга сразу изменило ситуацию. netwindЧейто она кривая? Нормальная. Как была спроектирована, прямо так и работает. Возможно, что работает как спроектирована, но согласитесь, что не даёт выигрыша ни на одном потоке, ни тем более на многих. В моём случае по крайней мере. Хотя в современной операционке всегда много потоков, всяких служб и демонов... netwindЭто частный случай того, о чем я говорил - параллельные процессы не параллелятся потому что не параллелятся никогда. Эту философию я не понимаю. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2015, 09:55:06 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
TvolodОказалось, что процессор не 8-ми, а 4-х ядерный. 8 ядер создаётся с помощью кривой технологии гипертрейдингаРазбивать ядра пополам есть смысл, пожалуй, в системе с большим количеством разных лёгких задач, с целью их параллельного выполнения. Да и то, с осторожностью. Каждая отдельная задача будет выполняться значительно дольше на "половинке" ядра, нежели на целом (объективно частота примерно вдвое ниже + время на переключение). Потому для тяжеляка проще отдать полный ресурс для более быстрого выполнения задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2015, 10:17:40 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
Возможно вам и др. участникам обсуждения будет интересно тестирование влияния технологии гипертрединга. Вот ссылка http://habrahabr.ru/post/248359/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2015, 22:41:59 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
Что-то я поторопился с выводами... :( После отключения гипертрейдинга всё стало настолько быстрее, что казалось, что проблема взаимного влияния процессов больше не стоит. Но добавив в систему метрики скорости каждого из процессов (просто считаю количество обработанных циклов в минуту), стало видно, что при двух, а тем более при трёх параллельных процессах скорость таки проседает. Просто если раньше она проседала на порядок, то теперь в 2-3 раза. На глазок это не очень было заметно, а с метриками стало ясно, что это так. По-прежнему не ясно, почему это так и что с этим делать. С одной стороны оказалось, что число процессорных ядер почти равно числу процессов. А значит дефицит ресурсов может возникать (при обработке каких-нибудь прерываний и системных процессов), с другой стороны, на машине, где крутится только MySQL время на обработку прочих системных процессов должно составлять доли процента. При трёх параллельных процессах загрузка ядер выглядит так: Т.е. номинально картинка соответствует 100% загрузке 3-х ядер. Диски по-прежнему работают только на чтение. Запросы по-прежнему 99% времени висят в статусе Copying to tmp table. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 22:53:36 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
Tvolod, Если дискового места достаточно, я бы попробовал на отдельной копии базы MySQL обновить до последней из ветки 5.5 или даже 5.6. Просто на всякий случай, проверить, что это не баг MySQL, который уже исправили. Я правильно понял из вашего последнего поста, что три запроса последовательно выполняются в 2-3 раза быстрее, чем три запроса параллельно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 23:14:37 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
Я правильно понял из вашего последнего поста, что три запроса последовательно выполняются в 2-3 раза быстрее, чем три запроса параллельно? Да. И так всегда просходит со всеми программами, более сложными чем чисто вычислительные, типа оверклокерских тестов super pi. ТС почему-то решил что это не нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 23:34:07 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
miksoftЕсли дискового места достаточно, я бы попробовал на отдельной копии базы MySQL обновить до последней из ветки 5.5 или даже 5.6. Просто на всякий случай, проверить, что это не баг MySQL, который уже исправили. Да, это можно попробовать. Тем более что написано: What's New in MySQL 5.6Better Performance and Scalability miksoftЯ правильно понял из вашего последнего поста, что три запроса последовательно выполняются в 2-3 раза быстрее, чем три запроса параллельно? Каждый по одиночке да, раза в 2-3 быстрее, чем если запускать его в параллель с другими. А вот выполняется ли неравенство t 1 + t 2 + t 3 < t 1+2+3 не знаю. Нужно делать точные замеры. Но это интерес чисто теоретический. Что будет, если "да" и что будет если "нет"? Зачем на машине 4 камня, если она упорно "едет" на одном? netwindДа. И так всегда просходит со всеми программами, более сложными чем чисто вычислительные, типа оверклокерских тестов super pi. ТС почему-то решил что это не нормально. А почему это должно быть нормально, при числе процессов меньшем числа ядер? Физика явления в чём? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2015, 00:39:33 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
Tvolod, так я уже объяснял Современные процессоры штука сложная. В вашем случае скорее всего ограниченный и разделяемый кеш действует больше всего. Тот факт, на что широкий рынок 256 ядерные процессоры что-то не торопятся попадать, разве не подтверждает это общее правило? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2015, 01:42:50 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
netwindTvolod, так я уже объяснял Современные процессоры штука сложная. В вашем случае скорее всего ограниченный и разделяемый кеш действует больше всего. Ну вот скорости работы оперативной памяти У меня как раз DDR-3 1600, т.е. 25 ГБит/сек. т.е. 3 ГБайт/сеу. Мускул у меня юзает менее 6 гигов, а все используемые таблицы весят около 4.5 Гигов т.е. за 1.5-2 секунды их можно просканировать полностью. Кеш же по идее в разы быстрее. netwindТот факт, на что широкий рынок 256 ядерные процессоры что-то не торопятся попадать, разве не подтверждает это общее правило? Широкий рынок не занят обработкой подобных массивов данных. Широкий рынок в контру режется, а для этого и двух ядер за глаза. Если посмотреть, сколько стоит 8-ми ядерный процессор, то можно понять, почему они не распространены. Широкий рынок серверов, кстати, идёт по пути увеличения числа процессоров на плате. Ещё лет 15 назад двухпроцессорные сервера были нормой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2015, 20:14:57 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
TvolodnetwindTvolod, так я уже объяснял Современные процессоры штука сложная. В вашем случае скорее всего ограниченный и разделяемый кеш действует больше всего. Ну вот До чего ж простые люди. И что ну вот? Очевидно, есть и другие ограничения и оценка работы процессора в вашем случае не укладывается в обычные 2+2+4. netwindТот факт, на что широкий рынок 256 ядерные процессоры что-то не торопятся попадать, разве не подтверждает это общее правило? Широкий рынок не занят обработкой подобных массивов данных. Широкий рынок в контру режется, а для этого и двух ядер за глаза. А как же Крузис ? Вы геометрические размеры процессора-то видели ? Проблема не в том, что некуда впихать 32 ядер на кристалл, не в нехватке электричества, а в том, что сложно добиться чтобы эти ядра эффективно работали вместе, не мешались друг другу . Широкий рынок это еще и хостеры занятные поддержкой кривых сайтов с SELECT ..CALC_FOUND_ROWS(), куча плохих программ, рендер видео и тд и тд. Их все можно было бы легко и просто ускорить, но не получается. Из-за усложнения всего комплеса ПО когда одни компоненты опираются на другие, рост многоядерной производительности даже не десктопе всем очень был бы нужен, но она что-то забуксовала. Не растет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2015, 13:00:16 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
В общем ещё несколько экспериментов. Нашёл такую статью про парковку ядер . Включил в режим максимальной производительности. И... Ничего не почувствовал. :)) Так же перешёл на MySQL 5.6. Опять таки, если и есть изменения в производительности (похоже что есть), то они минимальны. Зато процессы теперь висят не в статусе "Copying to tmp table", а в статусе "Sending data". Подозреваю, что просто те же операции (или даже подоперации) просто называются по-другому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2015, 19:16:09 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
ну тоесть запросы и схему БД вы отказываетесь оптимизироватьпринципиально ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2015, 00:39:19 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
Видите ли, девушка... У меня нет ни чёрного пояса по SQL, ни таких учебников по теории баз данных как у Вас (например, запрещающих использовать ID в Group by). За сим самонадеянно полагаю, что запросы вполне себе ничего, и позволяю себе ставить вопрос именно так, как я его ставлю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2015, 00:48:01 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
TvolodА вот выполняется ли неравенство t 1 + t 2 + t 3 < t 1+2+3 не знаю. Нужно делать точные замеры.По этой части какие-нибудь новые данные не появились? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2015, 03:25:45 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
TvolodВидите ли, девушка... У меня нет ни чёрного пояса по SQL, ни таких учебников по теории баз данных как у Вас (например, запрещающих использовать ID в Group by). За сим самонадеянно полагаю, что запросы вполне себе ничего, и позволяю себе ставить вопрос именно так, как я его ставлю... группировка по уникальному полю - это сила. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2015, 15:13:20 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
TvolodЧто-то я поторопился с выводами... :( После отключения гипертрейдинга всё стало настолько быстрее, что казалось, что проблема взаимного влияния процессов больше не стоит. Но добавив в систему метрики скорости каждого из процессов (просто считаю количество обработанных циклов в минуту), стало видно, что при двух, а тем более при трёх параллельных процессах скорость таки проседает. Просто если раньше она проседала на порядок, то теперь в 2-3 раза. На глазок это не очень было заметно, а с метриками стало ясно, что это так. По-прежнему не ясно, почему это так и что с этим делать. С одной стороны оказалось, что число процессорных ядер почти равно числу процессов. А значит дефицит ресурсов может возникать (при обработке каких-нибудь прерываний и системных процессов), с другой стороны, на машине, где крутится только MySQL время на обработку прочих системных процессов должно составлять доли процента. При трёх параллельных процессах загрузка ядер выглядит так: Т.е. номинально картинка соответствует 100% загрузке 3-х ядер. Диски по-прежнему работают только на чтение. Запросы по-прежнему 99% времени висят в статусе Copying to tmp table. Выделено 25/47 а физически 24, может попробовать бех swap-а стартануть, тут такое впечатление что менеджер памяти винды запутался. ( У win есть проблема со swap, ( кстати он как создан, фикс или плавающий? А то он может быть так размазан по дискам что тормозить будет при первом обращении к нему ) ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2015, 20:45:45 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
miksoftTvolodА вот выполняется ли неравенство t 1 + t 2 + t 3 < t 1+2+3 не знаю. Нужно делать точные замеры.По этой части какие-нибудь новые данные не появились? Да, сейчас вот провёл эксперимент. Условно говоря три разные задачи выполнялись последовательно и параллельно каждая по 1000 циклов с изменяющимися параметрами. Результаты следующие: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Т.е. в параллели общий объём таки считается быстрее, процентов на 50-60 (в таблице 37%, но реально вторая задача успела посчитаться по второму кругу). Таким образом в параллельных расчётах всё-таки смысл есть. :) ScareCrowгруппировка по уникальному полю - это сила. Во-первых, если посмотреть глазами, то по крайней мере в одном из запросов видно, что полей c ID в таблице несколько (MH.MsgID, MH.PlaceID), а значит искушённый человек может предположить, что они не уникальны. И, представьте себе, так и есть во всех трёх запросах! Во-вторых, даже если бы были уникальны, Вы про джойн таблиц что-нибудь слышали? NikolayV81Выделено 25/47 а физически 24, может попробовать бех swap-а стартануть, тут такое впечатление что менеджер памяти винды запутался. ( У win есть проблема со swap, ( кстати он как создан, фикс или плавающий? А то он может быть так размазан по дискам что тормозить будет при первом обращении к нему ) ) Николай, спасибо, почитаю/посмотрю. Хотя, разве, вот эта картинка не говорит о том что своп он не использует, раз диски без чтения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2015, 19:05:54 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
TvolodХотя, разве, вот эта картинка не говорит о том что своп он не использует, раз диски без чтения? Да кто-же его знает, оно может и не считаться счётчиками, лог ntfs тоже не пишется ( если файл уже выделен, то просто сектора переписываются ). При вываливании в swap вообще сразу несколько проблем появляется, фрагментация идёт в том числе и в памяти, я к сожалению проверить в win эти эффекты не могу, у меня уже много лет swap отключен. Но дело в том что на первом вашем PrintScreen-е в swap система залезла ещё больше, просто попробуйте вырубить ( если есть возможность эксперементировать 24Гб дотсаточно много ). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2015, 01:07:58 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
Tvolod, Кстати, можете лично спросить у разработчиков о причине вашей проблемы. habrahabr.ru/company/codefreeze/blog/250497/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2015, 16:54:32 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
miksoft, большое спасибо! Зарегистрировался. Не то чтобы надеюсь решить эту проблему с помощью семинара, но в целом интересное мероприятие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2015, 17:35:01 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
TvolodЗарегистрировался.Было бы здорово потом почитать топик-отчет о мероприятии. Заодно, возможно, развеете (или, наоборот, укрепите) бытуюущее мнение, что Оракл практически забил на разработку MySQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2015, 18:33:23 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
miksoftTvolodЗарегистрировался.Было бы здорово потом почитать топик-отчет о мероприятии. Заодно, возможно, развеете (или, наоборот, укрепите) бытуюущее мнение, что Оракл практически забил на разработку MySQL. И прочие заблуждения типа "percona нашла закомментированную константу в коде, раскомментировала ее и ускорила mysql в 10". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2015, 19:04:08 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
вот я погуглил и сэкономил вам билет в метро http://proitclub.ru/2009/06/22/Многопроцессорные-системы/ авторВсего 2-3 десятка лет назад использование нескольких процессоров встречалось лишь на больших суперкомпьютерах-мейнфреймах , но сейчас это уже встречается повсеместно, включая персональные компьютеры. Если говорить об архитектуре МС, то наиболее часто используется симметричная многопроцессорная обработка (Symmetrical Multi-Processing, SMP), в которой каждый процессор имеет равноправный доступ ко всей системной памяти. Однако система собственных процессорных кэшей усложняет синхронизацию и обмен данными, вводя дополнительные задержки, связанные с обновлением информации в памяти системы. Именно это, вкупе с ограничениями пропускной способности шины памяти, является причиной нелинейного изменения производительности при добавлении дополнительных процессоров. Кроме того, подобные системы плохо масштабируются из-за возникающих конфликтов при одновременном обращении нескольких процессоров к одним и тем же областям памяти. Подобные конфликты уже могут быть ощутимы при 8 одновременно работающих процессорах. Все современные серверы стандартной архитектуры на процессорах Intel построены с использованием технологии SMP. Практически любая современная операционная система может работать на таких серверах. Журнал с пафосным названием "ИТ-Спец" для вас достаточно авторитетен ? Неужели это кому-то еще неочевидно ? каких-то свопов приплели. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2015, 19:09:46 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
netwind, Мне кажется, что Вы зря нагнетаете на процессорный кэш. Не верю я, что он может дать деградацию производительности почти до уровня последовательного выполнения. На единицы процентов - может, но не в разы. Иначе проблема топикстартера не была бы настолько экзотичной, а затрагивала бы почти любой многопоточный софт. Корень проблемы мне более видится в неких блокировках, вынуждающих отдельные потоки работать последовательно изрядную долю времени. На роль их источника хорошо подошел бы диск, но топикстартер с картинками настаивает, что это не он. Как вариант, остаются блокировки на уровне доступа к внутренним структурам MySQL (например, гипотетически может оказаться принципиально однопоточным механизм обслуживания временных таблиц). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2015, 19:32:26 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
miksoftnetwind, Мне кажется, что Вы зря нагнетаете на процессорный кэш. Не верю я, что он может дать деградацию производительности почти до уровня последовательного выполнения. На единицы процентов - может, но не в разы. Иначе проблема топикстартера не была бы настолько экзотичной, а затрагивала бы почти любой многопоточный софт. Так она и затрагивает. Корень проблемы мне более видится в неких блокировках, вынуждающих отдельные потоки работать последовательно изрядную долю времени. На роль их источника хорошо подошел бы диск, но топикстартер с картинками настаивает, что это не он. Как вариант, остаются блокировки на уровне доступа к внутренним структурам MySQL (например, гипотетически может оказаться принципиально однопоточным механизм обслуживания временных таблиц). тогда на картинках была бы видна недогруженность N CPU при N потоках, но ее не заметно. Все полностью загружено работой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2015, 19:58:34 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
netwindТак она и затрагивает.Далеко не так часто и сильно, как должно было бы, если бы дело было реально в процессорном кэше. netwindтогда на картинках была бы видна недогруженность N CPU при N потоках, но ее не заметно. Все полностью загружено работой.Если ожидание ресурсов сделано индусским способом (тупым бесконечнм циклом), то так и будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2015, 20:09:33 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
miksoftnetwindТак она и затрагивает.Далеко не так часто и сильно, как должно было бы, если бы дело было реально в процессорном кэше. Так ситуация изменилась после отключения HT. Уже не настолько явно проявляется. netwindтогда на картинках была бы видна недогруженность N CPU при N потоках, но ее не заметно. Все полностью загружено работой.Если ожидание ресурсов сделано индусским способом (тупым бесконечнм циклом), то так и будет. Уверен, что так плохо быть не может. Это продукт мифотворчества пользователей ворованного Оракла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2015, 20:19:13 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
Если ожидание ресурсов сделано индусским способом (тупым бесконечнм циклом), то так и будет. Как я понимаю этот случай, тут из примитивов, которым оперирует mysql, как программа, блокироваться нечему. Все запросы захватывают блокировку чтения на таблицу успешно, каждый со своими отдельными временными таблицами работает. Тут в принципе mysql-ю как программе некуда меняться и расти. Что уж проще ? Делать нечего, кроме как уменьшать объем работы. Но это уже требует вникания в бизнес-логику. Вот почему все любят учить оптимизации, но никто не любит ее делать. Я тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2015, 20:29:02 |
|
||
|
Тормоза при выполнении параллельных запросов. Copying to tmp table
|
|||
|---|---|---|---|
|
#18+
miksoft, Зря не верите. Когда пошли первые конвееризованные ЦПУ с глубиной конвеера 6-7, делал замеры по потере производительности на переходах и "прочистке" конвеера ... получал падение в 2-4 раза (на память), вместо "итого рост". Сейчас глубина конвеера - значительно больше, поэтому есть и "предсказатели" переходов (и не один как понимаю!), позволяющие предварительно догружать конвеер ... за счет роста нагрузки на внутрипроцессорную шину ... и как следствие, чаще требовать подгрузки внутрипроцессрного кеша ... когда пошли первые процессоры с процессорным кешем ... получал аналогичные проблемы, но уже "этажом выше" ... и с большей нагрузкрй на шину... выходом была перекомпиляция приложений так, чтобы в кеш проца влезало основное ядро библиотек, и кеш блокировался от свопа принудительно. Потери прямого доступа в память окупались за счет частого попадания в кеш. Сейчас кеши приобрели ещё несколько уровней ... то есть проблема в ряде случаев может только "усугубиться"... .. просто уже давно, главным тормозом является шина, а не "вычислитель" в архитектуре "Фон Неймана"... она была полезна раньше, а сейчас - даже пара процов вполне способна "засрать" шину на 146% ... собственно почему многие архитектуры ограничиваются 4 "портами", "потоками", "камнями" ... дальше нет не только роста, а идет прямое падение в "итого" за счет накладок. Как сейчас обстоят дела в построении архитектур - давно не смотрел (лет 10) ... но не думаю что что-то "сильно поменялось". Эта проблема (и фиктивность многих "тестов") стояла уже в начале 90-х. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2015, 08:22:53 |
|
||
|
|

start [/forum/topic.php?all=1&fid=47&tid=1833574]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
53ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
136ms |
get tp. blocked users: |
2ms |
| others: | 233ms |
| total: | 474ms |

| 0 / 0 |
