The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Один из разработчиков MySQL раскритиковал проект и рекомендовал использовать PostgreSQL, opennews (??), 06-Дек-21, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


20. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  +5 +/
Сообщение от kai3341 (ok), 06-Дек-21, 12:00 
Блин. InnoDB интересен своей ораклиной структурой данных -- кластерный первичный ключ. Реализация MVCC не гадит себе под ноги, необходимость богомерзкого autovacuum отсутствует. Когда БД корректно остановлена, она не содержит мусора. InnoDB -- это топовый OLTP движок

Претензии есть. Реализация fulltext очень грустная, не поддерживает партиционирования. То есть если вы индексируете, например, новости, которые есть временной ряд -- поиск с указанием временных рамок будет крайне грустненьким

PS: У постгреса другие сильные стороны. Например, бесплатный rollback

Ответить | Правка | Наверх | Cообщить модератору

57. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  +/
Сообщение от Ilya Indigo (ok), 06-Дек-21, 13:34 
> Реализация fulltext очень грустная

Ну так если нужно нормальный, то для этого Sphinx есть.
А то что есть это просто что бы было кому лень со сфинксом заморачиваться.

Ответить | Правка | Наверх | Cообщить модератору

58. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  +1 +/
Сообщение от Наме (?), 06-Дек-21, 13:46 
> Блин. InnoDB интересен своей ораклиной структурой данных -- кластерный первичный ключ.
> Реализация MVCC не гадит себе под ноги, необходимость богомерзкого autovacuum отсутствует.
> Когда БД корректно остановлена, она не содержит мусора. InnoDB -- это
> топовый OLTP движок
> Претензии есть. Реализация fulltext очень грустная, не поддерживает партиционирования.
> То есть если вы индексируете, например, новости, которые есть временной ряд
> -- поиск с указанием временных рамок будет крайне грустненьким
> PS: У постгреса другие сильные стороны. Например, бесплатный rollback

Попутал ты всё. Какой "кластерный первичный ключ"? Это в МС Сиквеле типично отношение реализуют "кластерным индексом", в Оракле типично куча, хотя с 12-той версии появилась возможность реализовывать индексно-организованными таблицами (но редко кто так делает). Какая разница куда "гадим" MVCC? Когда нет необходимости каждый раз плодить UNDO-данные и таскать их из одного ТП в другое это банально быстрее, но больше места жрёт в локальной перспективе времени. Тут уж надо выбирать, что ценнее пространство или время ЦП и память. В чём богомерзкость вакуума? При адекватной настройке всё просто работает. Проблемы возникают, когда в одном кластере много БД и в них сильно разные по длительности транзакции -- 31-однобитного счётчика банально начинает не хватать. Ну так это нужно учитывать при развёртывании.
Инно хорошая академическая лабораторная работа, к проду не пригодная по ряду причин, вроде того, что вектор UNDO не попадает в WAL, что при краше приводит к развалу БД.

Ответить | Правка | К родителю #20 | Наверх | Cообщить модератору

75. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  +/
Сообщение от funny.falcon (?), 06-Дек-21, 14:31 
А можно ссылочки на развал БД при краше?
Ответить | Правка | Наверх | Cообщить модератору

96. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  –2 +/
Сообщение от Наме (?), 06-Дек-21, 16:10 
> А можно ссылочки на развал БД при краше?

Разверни. Запусти длительную транзакцию, не завершая её выруби питание. Т.к. данные UNDO скорее всего в полном объёме не попадут в журнал, то при обратном проигрывании при восстановлении получить несогласованную БД. Тут должны, конечно, звёзды сойтись. Чтобы грязные блоки уже попали на диск, но при этом вектор UNDO ещё нет. Но во "взрослых" СУБД это принципиально невозможно, а в Инно вполне под рабочей нагрузкой. Хотя это практически, объективно говоря, маловероятно, но при случае проблем при восстановлении добавит.

Ответить | Правка | Наверх | Cообщить модератору

119. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  +/
Сообщение от nik (??), 06-Дек-21, 19:57 
че за бред ?? -- все изменения в данных и в том же UNDO сохраняются в REDO, и пофиг длинная там транзакция или короткая, при сбросе питания все откатится до последнего COMMIT, а то что "не успело" -- вернется в пред. состояние из UNDO.
Ответить | Правка | Наверх | Cообщить модератору

141. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  +/
Сообщение от Мимо_проходил (?), 06-Дек-21, 21:09 
> че за бред ?? -- все изменения в данных и в том
> же UNDO сохраняются в REDO, и пофиг длинная там транзакция или
> короткая, при сбросе питания все откатится до последнего COMMIT, а то
> что "не успело" -- вернется в пред. состояние из UNDO.

Нет, это не так. Возможны состояния, когда UNDO не оказалось в REDO, а изменённые блоки уже на диске.

Ответить | Правка | Наверх | Cообщить модератору

133. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  +/
Сообщение от Онаним (?), 06-Дек-21, 20:55 
Бред.
Ну или эксплуатация на системе, не умеющей в write barrier - там что угодно развалится, не только InnoDB.
Ответить | Правка | К родителю #96 | Наверх | Cообщить модератору

139. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  +/
Сообщение от Мимо_проходил (?), 06-Дек-21, 21:07 
> Бред.
> Ну или эксплуатация на системе, не умеющей в write barrier - там
> что угодно развалится, не только InnoDB.

Словья-то какие воспроизводим. Ещё бы знали, что это значит )))) Write barrier тут вообще не причём. Причём тут то, что Inno не обеспечивает WAL для UNDO. Вот и всё. Сделано это из соображений, да, скорости. И, в общем, имеет право на жизнь.

Ответить | Правка | Наверх | Cообщить модератору

140. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  +/
Сообщение от Онаним (?), 06-Дек-21, 21:08 
Короче я не знаю, как ты умудрился InnoDB развалить - у меня за долгие годы не получилось.
Ответить | Правка | Наверх | Cообщить модератору

195. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  +/
Сообщение от 1 (??), 07-Дек-21, 11:21 
У тебя просто не было длинных транзакций ...

А так разваливается и при резком выключении питания (гасится ИБП) так и при нехватке свободного места ... гасится мониторингом.

А так ... Ну что спорить-то какой нож лучше ?

Ответить | Правка | Наверх | Cообщить модератору

220. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  +/
Сообщение от Онаним (?), 07-Дек-21, 15:28 
Ну короче да, смысла спорить нет - я хз как вы умудряетесь InnoDB развалить, видимо руки должны быть правильно заточены.
Ответить | Правка | Наверх | Cообщить модератору

142. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  +/
Сообщение от Онаним (?), 06-Дек-21, 21:10 
И что значит при чём тут WB.
Когда двиг выставляет fsync()/fdatasync()/sync_file_range(), он ожидает, что на диске к моменту завершения будет всё, что он отписал, и заказал. Если WB нет - с энной вероятностью хрен оно будет на диске вовремя, и рандомное выключение приведёт к интересному.
Ответить | Правка | К родителю #139 | Наверх | Cообщить модератору

143. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  +/
Сообщение от Онаним (?), 06-Дек-21, 21:20 
Ну и да, какой WAL для UNDO вы вообще собрались писать, если к моменту коммита в REDO данные только в REDO. Далее его флашим в таблицу как придётся, когда по нагрузке посвободнее например, даже если что-то отвалится, делаем рефлаш. Двойная нагрузка на флаш, ещё и с чтением из REDO, если из буфера вылетело, выйдет только когда REDO заполнен.

Это две разные парадигмы - либо пишем в REDO и флашим в таблицу потом, либо сразу пишем в таблицу и далее начинаются пляски с UNDO: мы либо переносим, и тогда получаем двойную нагрузку в момент транзакции, либо как в постгресном, пишем CoW'ом, и тогда надо вакуумить. Если у нас UNDO есть, REDO уже не нужен.

Ответить | Правка | К родителю #139 | Наверх | Cообщить модератору

144. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  +/
Сообщение от Онаним (?), 06-Дек-21, 21:26 
Могу ещё подсказать как без WB редо развалить.

Всё не просто, а очень просто: мы флашим редо, выставляем синк на таблицу, выставляем синк на поинтеры редо. Если таблица на диск не попала, а поинтеры внезапно попали - имеем лютый 3.14ц, в таблице старые данные, в редо уже ничего.

С андо попроще, с андо корова конечно решает, но зато корову вакуумить надо регулярно.

Ответить | Правка | К родителю #139 | Наверх | Cообщить модератору

155. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  +/
Сообщение от Онаним (?), 06-Дек-21, 23:18 
Похоже как раз на частичный коммит REDO в отсутствии WB.
Ответить | Правка | К родителю #96 | Наверх | Cообщить модератору

156. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  +/
Сообщение от Онаним (?), 06-Дек-21, 23:18 
Ну или fsync кто-то бездумно выключил xD
Ответить | Правка | К родителю #96 | Наверх | Cообщить модератору

86. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  –1 +/
Сообщение от penetrator (?), 06-Дек-21, 15:24 
в MSSQL некластерный первичный индекс (если речь не про Azure) появился очень очень давно (задолго до появления самого Azure)
Ответить | Правка | К родителю #58 | Наверх | Cообщить модератору

98. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  –1 +/
Сообщение от Наме (?), 06-Дек-21, 16:12 
> в MSSQL некластерный первичный индекс (если речь не про Azure) появился очень
> очень давно (задолго до появления самого Azure)

Не некластерный, а кластерный. Кластерней некуда. Но это всё словоблудие майковское.

Ответить | Правка | Наверх | Cообщить модератору

101. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  –1 +/
Сообщение от penetrator (?), 06-Дек-21, 16:45 
>> в MSSQL некластерный первичный индекс (если речь не про Azure) появился очень
>> очень давно (задолго до появления самого Azure)
> Не некластерный, а кластерный. Кластерней некуда. Но это всё словоблудие майковское.

некластерный, heap или как хочешь еще, и он там есть и есть очень давно

PK в MSSQL может быть 2 типов

с пробуждением

Ответить | Правка | Наверх | Cообщить модератору

105. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  –1 +/
Сообщение от Наме (?), 06-Дек-21, 16:59 
>>> в MSSQL некластерный первичный индекс (если речь не про Azure) появился очень
>>> очень давно (задолго до появления самого Azure)
>> Не некластерный, а кластерный. Кластерней некуда. Но это всё словоблудие майковское.
> некластерный, heap или как хочешь еще, и он там есть и есть
> очень давно
> PK в MSSQL может быть 2 типов
> с пробуждением

Heap это, пардон, куча. Т.е. когда данные хранятся вообще вне всякой упорядоченной структуры, а просто страницы в цепочку выделяются по IAM. В Сибэйсе хренелион лет назад решили, что коль уникальный индекс практически всегда создаётся, то логично в структуре этого индекса хранить и все прочие данные, которые не входят в индексный ключ, а не отдельно кучу и отдельно би-три с листами с индексным ключом. Ну и сделали такою смесь верблюда с носорогом -- сверху служебные структуры би-три, а на листах все данные. Ну вот, эту хрень и назвали кластерным индексом. В принципе, логичное решение, но проблема в том, что одного индекса в типичных условиях никогда не бывает достаточно, а хранение всех данных в структуре какого-то одного индекса зачастую приводит к смещению статистик распределения со всеми печальными последствиями. Поэтому тот же Оракл такого не делал. Я уж не помню, когда они ввели что-то подобное, по-моему, с 12-той версии. В Слоне тоже такого не было.

Ответить | Правка | Наверх | Cообщить модератору

152. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  +/
Сообщение от penetrator (?), 06-Дек-21, 22:53 
https://www.red-gate.com/simple-talk/databases/sql-server/t-.../

Heaps are tables without a clustered index.

Я вообще не собирался лезть в детали, я про то что в MSSQL ЕСТЬ КУЧИ.
Это онли про "Это в МС Сиквеле типично отношение реализуют "кластерным индексом", в Оракле типично куча"

Куча вполне себе возможна, доступна и используется в MSSQL. Это то, что я имел ввиду.
Куча возможна если нет ниодного кластерного индекса, которым обычно и является первичный ключ (первый и часто единственный кандидат).
Никакие нюансы терминологии меня в душе не ебали в тот момент.

Я только вернул кучи назад в MSSQL Server! С этим же все согласны? Ну вот и отлично.

Ответить | Правка | Наверх | Cообщить модератору

202. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  +/
Сообщение от Наме (?), 07-Дек-21, 11:43 
Не серчай. Вокруг этой темы перебор всякой терминологии. У многих в результате каша. Я просто попытался немного ситуацию прояснить.
Так что, PK (первичный ключ) это Ограничение и оно НИКОГДА не реализуется кучей. Реализуется "кластерным" (исходная куча тю-тю, если была) или доп. (некластерным) индексом (доп. в смысле дополнительным к исходной куче, которая в этом случае никуда не девается, просто по данным этой кучи строится В-древо, которое эти данные структурирует, что и упрощает с одной стороны поиск, с другой -- создаёт основу для реализации условия уникальности).
Ответить | Правка | Наверх | Cообщить модератору

107. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  –1 +/
Сообщение от Наме (?), 06-Дек-21, 17:01 
> PK в MSSQL может быть 2 типов

Как бы, PK это не индекс, а Constrain -- ограничение первичного ключа. Который реализуется, под капотом, созданием уникального кластерного уже Индекса, если явно не заказать создавать не кластерный индекс, а дополнительный.

Ответить | Правка | К родителю #101 | Наверх | Cообщить модератору

108. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  –1 +/
Сообщение от Наме (?), 06-Дек-21, 17:07 
> некластерный, heap или как хочешь еще, и он там есть и есть
> очень давно
> PK в MSSQL может быть 2 типов

Маленький бесплатный ликбез. В МС Сиквеле данные отношения могут хранится либо в куче, либо в би-три, организованном по значению уникального ключа (сортировки). PK же (Primary Key) это одно из видов Ограничений, которое реализуется либо тем, что все данные отношения помещаются в структуру индекса, либо тем, что создаётся куча, а куче создаётся би-три-структура доп. индекса, в которой на листах хранятся данные индексного ключа и ссылки на страницы кучи, где хранится оригинальная индексируемая строка.

Ответить | Правка | К родителю #101 | Наверх | Cообщить модератору

110. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  +/
Сообщение от Наме (?), 06-Дек-21, 17:18 
> Маленький бесплатный ликбез. В МС Сиквеле данные отношения могут хранится либо в
> куче, либо в би-три, организованном по значению уникального ключа (сортировки). PK
> же (Primary Key) это одно из видов Ограничений, которое реализуется либо
> тем, что все данные отношения помещаются в структуру индекса, либо тем,
> что создаётся куча, а куче создаётся би-три-структура доп. индекса, в которой
> на листах хранятся данные индексного ключа и ссылки на страницы кучи,
> где хранится оригинальная индексируемая строка.

Хотя, малыши, я тут несколько ошибся. Когда заказываешь PK к существующему уже отношению, в котором есть данные, то данные из кучи перемещаются в это би-три, а исходная куча удаляется, если же заказать PK при создании отношения, то и не будет создаваться, а сразу будет создано би-три, в который данные отношения и будут писаться. Если же создать PK и явно указать, что ограничение должно реализоваться доп. индексом, то будет к куче создан доп. индекс в виде би-три. Вот и всё.

Ответить | Правка | Наверх | Cообщить модератору

159. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  +1 +/
Сообщение от kai3341 (ok), 06-Дек-21, 23:42 
> Попутал ты всё. Какой "кластерный первичный ключ"?

https://dev.mysql.com/doc/refman/8.0/en/innodb-index-types.html

Each InnoDB table has a special index called the clustered index that stores row data. Typically, the clustered index is synonymous with the primary key.

Не попутал.

Ответить | Правка | К родителю #58 | Наверх | Cообщить модератору

206. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  +/
Сообщение от Наме (?), 07-Дек-21, 12:15 
>> Попутал ты всё. Какой "кластерный первичный ключ"?
> https://dev.mysql.com/doc/refman/8.0/en/innodb-index-types.html
> Each InnoDB table has a special index called the clustered index that
> stores row data. Typically, the clustered index is synonymous with the
> primary key.
> Не попутал.

Кластерный индекс это... хм... индекс. А Первичный ключ это... ограничение. Просто в силу того, что в МС Сиквеле (и в Инно) зачастую разраб при определении отношения сразу пишет требование ограничения PK (причём, по умолчанию оно реализуется именно кластерным индексом), то ему и невдомёк, что Ограничение и Индекс это не одно и тоже. Совсем.

Ответить | Правка | Наверх | Cообщить модератору

210. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  +/
Сообщение от kai3341 (ok), 07-Дек-21, 13:12 
> Each InnoDB table has a special index called the clustered index

Я настоятельно рекомендую использовать терминологию официальной документации, а не вашу собственную

Ответить | Правка | Наверх | Cообщить модератору

211. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  +/
Сообщение от Наме (?), 07-Дек-21, 13:35 
Читать умеешь? clustered index это кластерный индекс (структура данных такая). Primary key это constraint (инструкция такая). Разницу между Constraint и Index способен уловить? Нет? Это типично.
Дальше и написано, что коль практически всегда PK реализуется с использование кластерного индекса, то их можно использовать как синонимы. Так вот, нельзя. Это не синонимы и близко. Кластерный индекс можно создать и не создавая ограничения PK. Как и ограничение PK можно реализовать некластерным доп. индексом.
Ответить | Правка | Наверх | Cообщить модератору

212. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  +/
Сообщение от Наме (?), 07-Дек-21, 13:35 
Читать умеешь? clustered index это кластерный индекс (структура данных такая). Primary key это constraint (инструкция такая). Разницу между Constraint и Index способен уловить? Нет? Это типично.
Дальше и написано, что коль практически всегда PK реализуется с использование кластерного индекса, то их можно использовать как синонимы. Так вот, нельзя. Это не синонимы и близко. Кластерный индекс можно создать и не создавая ограничения PK. Как и ограничение PK можно реализовать некластерным доп. индексом.
Ответить | Правка | К родителю #210 | Наверх | Cообщить модератору

235. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  +/
Сообщение от Онаним (?), 10-Дек-21, 09:19 
У пользователей MSSQL проблемы с тем, что они умудряются мешать индексы с констрейнтами, при этом их механически разделяя :D
Ответить | Правка | К родителю #210 | Наверх | Cообщить модератору

64. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  +/
Сообщение от Аноним (64), 06-Дек-21, 13:58 
> необходимость богомерзкого autovacuum отсутствует.

Документация с тобой не согласна: https://dev.mysql.com/doc/refman/8.0/en/optimize-table.html

Ответить | Правка | К родителю #20 | Наверх | Cообщить модератору

184. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  +/
Сообщение от kai3341 (ok), 07-Дек-21, 10:38 
> Документация с тобой не согласна: https://dev.mysql.com/doc/refman/8.0/en/optimize-table.html

Ознакомьтесь с документацией. Между optimize table и autovacuum есть огромная разница. Начиная с того, что optimize table -- это опция, которую можно не запускать никогда, а вот autovacuum отключать очень не рекомендуется

Ещё раз -- это разница между демоном, который в норме должен работать постоянно, и опцией, которую можно годами не запускать

Ответить | Правка | Наверх | Cообщить модератору

233. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  +/
Сообщение от Аноним (232), 09-Дек-21, 05:40 
Зависит от типа нагрузки, с одной без optimize table у вас диск переполнится, а с другой можно и автоваккум отключить.
Ответить | Правка | Наверх | Cообщить модератору

236. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  +/
Сообщение от Онаним (?), 10-Дек-21, 09:21 
Каким образом "переполнится диск" без optimize table, если innodb прекрасно умеет писать данные в освободившиеся страницы, не потрудитесь объяснить?

Нет, есть там пара очень специфичных случаев, но вы их вряд ли приведёте, с ними мало кто сталкивается.

Ответить | Правка | Наверх | Cообщить модератору

68. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  +1 +/
Сообщение от Аноним (68), 06-Дек-21, 14:18 
> необходимость богомерзкого autovacuum отсутствует

Богомерзкое - это писать логи. А автовакуум это красота.

Ответить | Правка | К родителю #20 | Наверх | Cообщить модератору

237. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  +/
Сообщение от Онаним (?), 10-Дек-21, 09:26 
У вас MVCC уже без лога работает?
И даже с индексами?

На самом деле нет. Постгря всё так же прекрасно пишет redo log, просто его назвали wal.

Ответить | Правка | Наверх | Cообщить модератору

238. "Один из разработчиков MySQL раскритиковал проект и рекомендо..."  +/
Сообщение от Онаним (?), 10-Дек-21, 09:27 
Тьфу плин MVCC.
ACID, конечно же.
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру