|
|
|
настройка mysql
|
|||
|---|---|---|---|
|
#18+
авторinnodb_flush_log_at_trx_commit — жалуетесь, что InnoDB работает в 100 раз медленнее MyISAM? Вероятно, Вы забыли про настройку innodb_flush_log_at_trx_commit. Значение по умолчанию «1» означает, что каждая UPDATE-транзакция (или аналогичная команда вне транзакции) должна сбрасывать буфер на диск, что достаточно ресурсоёмко. Большинство приложений, в особенности ранее использовавшие таблицы MyISAM, будут хорошо работать со значением «2» (т.е. «не сбрасывать буфер на диск, только в кэш ОС»). Лог, однако, всё равно будет сбрасываться на диск каждые 1-2 секунды, поэтому в случае аварии Вы потеряете максимум 1-2 секунды обновлений. Значение «0» повысит производительность, но Вы рискуете потерять данные даже при аварийной остановке mySQL-сервера, в то время как при установке значение innodb_flush_log_at_trx_commit в «2» Вы потеряете данные только при аварии всей операционной системы. кто может помочь разжевать данную запись ... если я поставлю 2 то что я могу потерять и тд ... ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 14:21:22 |
|
||
|
настройка mysql
|
|||
|---|---|---|---|
|
#18+
caHek2x, у тебя уже мускл начал медленно работать??? типо изза команды вставки, запрос к сайту обрабатываеться 2 сек, изза того что вставка 1.5 сек? тогда не лезь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 14:51:56 |
|
||
|
настройка mysql
|
|||
|---|---|---|---|
|
#18+
у меня очень много запросов идет ... около 10 в секунду ... работает вроде все отлично ... но моментами бывает начинает подвисать ... потестировав увидел что дольше всего выполняются update запросы причем опятьже не постоянно а периодически ... начал искать по интернету и наткнулся на innodb_flush_log_at_trx_commit ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 14:55:45 |
|
||
|
настройка mysql
|
|||
|---|---|---|---|
|
#18+
caHek2x, если уже известный нам друган-провайдер задумает шатать сервер, то что-то из последних транзакций потеряете. Для начала неплохо бы уяснить что такое транзакция и зачем они нужны в традиционных субд. Я считаю оправданным для обычных вебсайтов использовать 2 или 0. Хотя я уже и заявлял что у вас все равно не получится настроить mysql, данная настройка действительно часто помогает. Но нужно понимать, что это компромисс с надежностью. По сути это не "настройка mysql", а осознанный риск. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 15:02:55 |
|
||
|
настройка mysql
|
|||
|---|---|---|---|
|
#18+
поэтому я и зашел сюда узнать на что именно будет риск ... потеря последних пару секунд или чтото хуже ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 15:09:45 |
|
||
|
настройка mysql
|
|||
|---|---|---|---|
|
#18+
И кроме того, все это относится только к innodb. судя по статистике здесь 16198051 , у вас операций с innodb не много. Основные операции идут таки с myisam, как и положено традиционному нехипстерскому сайту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 15:09:49 |
|
||
|
настройка mysql
|
|||
|---|---|---|---|
|
#18+
caHek2x, если по-простому, то да - лишь пара секунд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 15:10:26 |
|
||
|
настройка mysql
|
|||
|---|---|---|---|
|
#18+
netwindИ кроме того, все это относится только к innodb. судя по статистике здесь 16198051 , у вас операций с innodb не много. Основные операции идут таки с myisam, как и положено традиционному нехипстерскому сайту. у меня только innoBD таблицы ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 15:12:58 |
|
||
|
настройка mysql
|
|||
|---|---|---|---|
|
#18+
опс опечаточка innodb ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 15:27:04 |
|
||
|
настройка mysql
|
|||
|---|---|---|---|
|
#18+
вот ктоб мне рассказал ВКУДА оно сбрасывает? в редо лог? в датафайл? и туда и туда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2014, 16:59:29 |
|
||
|
настройка mysql
|
|||
|---|---|---|---|
|
#18+
ScareCrow, в редолог. отключить сброс в датафайл кажется нельзя вообще. или там была какая-то недокументированная опция. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2014, 01:08:08 |
|
||
|
настройка mysql
|
|||
|---|---|---|---|
|
#18+
кто может помочь разжевать данную запись ... если я поставлю 2 то что я могу потерять и тд ... ?[/quot] авторinnodb_flush_log_at_trx_commit — жалуетесь, что InnoDB работает в 100 раз медленнее MyISAM? Ну, кстати сказать, какой бы ни был innodb_flush_log_at_trx_commit , быстрее или так же как MyISAM Inno работать не будет. Он в любом случае ведёт журнал транзакций, а MyISAM - нет. Другое дело, что то, что делает MyISAM, я бы и работой-то не назвал... автор Вероятно, Вы забыли про настройку innodb_flush_log_at_trx_commit. Значение по умолчанию «1» означает, что каждая UPDATE-транзакция (или аналогичная команда вне транзакции) должна сбрасывать буфер на диск, что достаточно ресурсоёмко. Это т.н. strict durability. Если ставить 1, по концу транзакции последняя (как правило, а на самом деле -- все незаписанные) страница журнала транзакций будет ОБЯЗАТЕЛЬНО физически записана на диск. С учётом того, что для последней страницы часто применяется ping-pong write, то это в два раза больше чем 8k, т.е. две записи по 8k. НА КАЖДЫЙ COMMIT! Явный или неявный. Если у вас очень маленькие транзакции, то это особенно "больно" в плане потери производительности. авторБольшинство приложений, в особенности ранее использовавшие таблицы MyISAM, будут хорошо работать со значением «2» (т.е. «не сбрасывать буфер на диск, только в кэш ОС»). Лог, однако, всё равно будет сбрасываться на диск каждые 1-2 секунды, поэтому в случае аварии Вы потеряете максимум 1-2 секунды обновлений. Значение «0» повысит производительность, но Вы рискуете потерять данные даже при аварийной остановке mySQL-сервера, в то время как при установке значение innodb_flush_log_at_trx_commit в «2» Вы потеряете данные только при аварии всей операционной системы. Если ставить 0, то это т.н. relaxed durability, при этом сброс активных страниц лога производится асинхронно, раз в секунду. COMMIT не ждёт записи этих страниц лога. Но при этом вы выполняете COMMIT в приложении, а оно реально физически может и не закоммитится в смысле DURABILITY -- вы делаете COMMIT, думаете, что ваша транзакция прошла, но тут сразу после (!!) COMMIT вырубается электричество, и ваша транзакция остаётся незаписанной на диск и будет ROLLBACK-нута при следующем старте сервера. Это значение категорически нельзя испльзовать при распределённых транзакциях (я правда и не знаю, поддерживает ли MySQL их вообще). Значение 2 -- это вариация на значение 1, но только без требования физической синхронизации кэша операционки с диском. По эффекту от использования практически аналогична значению 0, а по скорости работы -- между 0 и 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2014, 13:25:43 |
|
||
|
настройка mysql
|
|||
|---|---|---|---|
|
#18+
ScareCrowвот ктоб мне рассказал ВКУДА оно сбрасывает? в редо лог? в датафайл? и туда и туда? в редо лог. Он же журнал транзакций. Он же просто лог. он же transaction log. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2014, 13:26:33 |
|
||
|
настройка mysql
|
|||
|---|---|---|---|
|
#18+
caHek2xу меня очень много запросов идет ... около 10 в секунду ... работает вроде все отлично ... но моментами бывает начинает подвисать ... потестировав увидел что дольше всего выполняются update запросы причем опятьже не постоянно а периодически ... начал искать по интернету и наткнулся на innodb_flush_log_at_trx_commit ... Тут важнее не сколько запросов, а сколько завершённых транзакций, и какого они размера. Если транзакции довольно крупные, и ещё и редкие, то innodb_flush_log_at_trx_commit = 0 может и наоборот замедлять . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2014, 13:28:24 |
|
||
|
настройка mysql
|
|||
|---|---|---|---|
|
#18+
авторScareCrow, в редолог. в таком случае эта настойка бесполезна. потому что пишется туда ПОСЛЕДОВАТЕЛЬНО а значит очень быстро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2014, 14:06:43 |
|
||
|
настройка mysql
|
|||
|---|---|---|---|
|
#18+
ScareCrow, если все не сомневаются, что настройка =0 полезна, то может быть в вашем понимании работы дисков что-то не так ? Полезна, потому что ответ от диска на каждую команду должен вернуться назад через все виды и этапы прохождения этой командый, прежде чем клиент увидит ответ на commit. Из-за того что все последовательно, ожидание ответа от одной команды тормозит отправку других. Это опять же "по-простому" для ИТ-колхозников. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2014, 14:14:29 |
|
||
|
настройка mysql
|
|||
|---|---|---|---|
|
#18+
netwindScareCrow, если все не сомневаются, что настройка =0 полезна, то может быть в вашем понимании работы дисков что-то не так ? Полезна, потому что ответ от диска на каждую команду должен вернуться назад через все виды и этапы прохождения этой командый, прежде чем клиент увидит ответ на commit. Из-за того что все последовательно, ожидание ответа от одной команды тормозит отправку других. Это опять же "по-простому" для ИТ-колхозников. чего???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2014, 14:57:51 |
|
||
|
настройка mysql
|
|||
|---|---|---|---|
|
#18+
ScareCrow, ставьте 1 . И не лезьте никуда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2014, 17:41:55 |
|
||
|
настройка mysql
|
|||
|---|---|---|---|
|
#18+
внесу ясность работы с винчестером субд. когда ваше приложение пишет последовательно в файл по одному байту. никто не будет на каждый байт делать физическую запись на шдд - а для этого надо считать кластер где байт находиться, заменить нужный байт новым значением и записать. операционная система буферизирует файловые операции. в виндоус можно заметить это тем что тотал не сразу показывает размер файла новый, хотя он отслеживает изменения...но эти изменения не идентичны записям в файл программой, они идентичны изменениям ядром системы файлов. когда нашей програмой являеться субд, вноситься маленькое но в работу с ФС - субд сама пишет файл, не пользуясь оптимизациями работы с ФС заложенные в ОС. поэтому логика(опыт) работы с файлами на наших програмках не подходит сдесь. если размер транкзанкции как верно кто-то выше заметил маленький (читай существенно меньше размера кластера) то запись физически каждого пука будет явно обременять винчестер. АХТУНГ знаете редкие случаи, когда изза отключения питания ошибка в файле на винчестере может выйти, или при вытягивании влешки когда на наеё чтотописалось... вот оно и есть - файловый буфер потерялся при отключении = внём были данные , которые с точки зрения приложения писавшего в файл, записаны, в реальности ещо нет. вот их мы и теряем. так вот теперь понятно что сделает значение 2!? оно посути отключает со стороны субд контроль над реальной работой с файлом данных. это не означает что как в доках написано последние 1-2 секунды вы потеряете. возможно и больше. тут уже как какрта ляжет, всё зависит от того кто и сколько и куда и как пишет в другие файлы. для ОС файл базы не приоритетней, его файловый буфер будет обрабатываться на равне со всеми. если другой софт перегрузит винчестер, что файловые буферы разростуться до 50мг, ну сами можете прикинуть сколько последних секунд вы потеряете, особено если авария с ос возникнет имено по принципу винчестер начал барахлить ,действия с ним стали медленными, фалйовые буферы ос медлено начинают наполняться, ибо винт не успевает делать всё что нужно, дорастают до таких размеров что оперативка заканчиваеться ии... нессать! ОС в этом случае умеет аварийно блок памяти с файловыми буферами(кучей) скинуть на винчестер, мол потом разребу, но винчестер наш барахлит, эта операция пройдёт с ошибкой, и файловым буферам хана - при таком развитии событий, вы можете и последние пол часа потерять, если работа вплане обьёма записей была не большой, а винчестер просто начал подыхать конкретно. но это всё не частые события. так что обычно да, секундами меряеться потеря при аварии ОС авария субд не приведет к потере, ибо с точки зрения субд при значении 2 данные записаны! только авария ОС даст потерю. ну а теперь значение 0 СУБД пытаеться по сути помочь ОС оптимизировать запись на винчестер, суть сводиться к тому, что если в какуюто таблицу мы делаем вставку(длина записи и бабуйня прочая на 100 байт) раз в секунду, то впринципе субд, может ваще копить таких вставок много и долго, не давая данные на винчестер...тоесть как ОС буферизирует работу с файлами, тут сама субд ещо начнёт это делать. в этом случае, таки да, повышение реально произойдёт и заметно при значении 2, тут смотря какая специфика работы у субд...если у неё файл на 300гб, и изменения мелкие равномерно по всему файлу, то сами понимаете, буферизация субд мало что даст...ведь один чорт все эти мелкие изменения попадают в совершенно разные части поверхности диска. а вот если буферы ОС накапливают изменения на винчестере, которые попадают в один или смежные кластеры(особено для САТА винчестеров последнее-смежность) то выигрыш будет - вместо нескольких обращений к шдд, будет сделано за одно. при значении 0 впринципе тоже можно не заметить прироста, но обычно он всётаки будет!!! данные индекса храняться в одном месте на шдд, и субд про это знает, она может изменения в индексе буферизировать очень долго, чего не произойдёт при значение 2 ибо ОС понятия не имеет что это за мелкие изменения поступают... она в цикле пытаеться все файловые буферы как можно быстрее сохранить на диск. при слабой нагрузке на шдд, по сути буферы ОС будут всегда пустые. можно сказать что суть буферизации ОС(значение 2) - упростить работу шдд под нагрузкой(когда буферы не успевают быстро на шдд падать, в них изменения одних и тех же кластеров/смежных, агрегируються) суть буферизации субд - вне зависимости от текущей нагрузки шдд, уменьшить его работу. ========== поэтому, стоит 1 пускай стоит если у тебя будет проблема на сервере именно изза шдд, ставишь 2 - для того оно и есть. если тормоза всёравно , думаешь что делать, как упростить работу, ну или ставишь 0 и думаешь что скажеш людям когда база рухнет и потеряешь часть данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2014, 18:53:29 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38680851&tid=1834600]: |
0ms |
get settings: |
8ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
68ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 414ms |

| 0 / 0 |
