Здравствуйте, Anton Batenev, Вы писали:
_>> А вот проблема ключа длиной 36 vs 16 — это риал.
AB>Как уже говорилось, если хочешь экономить место, никто не запрещает его конвертировать в бинарное представление и заносить в BINARY(16) поле, по которому построить такой же индекс.
Да не проблема — я в MS SQL тоже легко могу использовать binary(16), и записывать, и сравнивать, и индексы строить. И?
Здравствуйте, Anton Batenev, Вы писали:
AB>Здравствуйте, _d_m_, Вы писали:
_>> Это физически невозможно. И как же решили великие создатели MySQL эту проблему?
AB>Как-то так. Решение без изысков (и не без недостатков), но работает и успешно используется.
Задаю вопрос по другому. Есть таблица с автоинкрементным полем. Эта таблица существует в двух БД и настроена двухсторонняя репликация этой таблицы, как быть с автоинкрементынм полем? Сразу говорю identity seed — есть чмо и отстой, поэтому не будем о этом. Итак, как?
Здравствуйте, Mamut, Вы писали: M>Причем в Enterprise tudio есть гниальная фича «показать план запроса», оторый подскажет, на каких именно данных просаживается запрос. Обычно бывает достаточно прикрутить забытый индекс — и вуаля.Для MySQL'я таких тлзов просто не существует в природе, насколько я знаю
Почему — есть. Мускульный explain выглядит, конечно, поплоше Query Plan-а в студии, но вполне пригоден для анализа.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, dimgel, Вы писали:
D>Вот, ты сам и подтвердил, что ACID-ом тут и не пахнет, нужно вручную.
Скажем так, ACID в случае с DDL не полностью в том смысле, что для отката может понадобится дополнительно пара приседаний.
D>Из сказанного это никак не следует, т.к. приведённый мной сценарий рушил метаданные независимо от того, работал с базой кто-нибудь ещё или нет. D>И если уж на то пошло, условие down-time выполнялось автоматически, т.к. обновлялка работала при инициализации servlet context.
Если с базой никто кроме тебя во время деплоймента не работает, то тогда зачем тебе транзакция?
T>>Но даже на оракле и скл сервере, все деплойменты которые я проводил/имел отношение/наблюдал проходили с down-time'ом на время бекапа (когда было возможно), прогона скрипта (без транзакций) и первичного тестирования. Так что в данном случае не было бы никакой разницы.
D>Это вообще о чём и к чему?
Это вообще к тому, что возможность проводить большой деплоймент, для которого требуется отдельная транзакция по рабочей базе хоть и полезна, но на практике редко используемая.
Здравствуйте, _d_m_, Вы писали:
___>Здравствуйте, mrTwister, Вы писали:
T>>А всего то надо было сделать бекап перед деплойментом.
___>На нормальных серверах с нормальными транзакциями — нет необходимости.
Дело не в нормальности сервера, а в нормальности процессов и в configuration management'е. Даже после удачно проведенного деплоймента приложение может перестать работать (1000 причин тому) и придется откатиться к предыдущей рабочей версии. Как тебе в этом случае транзакции помогут?
Здравствуйте, _d_m_, Вы писали:
___>Спасибо, посмеялся. ___>Во первых, речь шла про план запроса. Типа такого http://files.rsdn.ru/21534/PlanPutina2.GIF , там еще мышкой наводишь например на индекс скан и смотришь что, где и почему — число строк, размер строки, io cost и многое.
Тебе шашечки, или ехать? Или ты информацию только в картинках воспринимаешь?
Здравствуйте, _d_m_, Вы писали:
___>Да не проблема — я в MS SQL тоже легко могу использовать binary(16), и записывать, и сравнивать, и индексы строить. И?
Здравствуйте, _d_m_, Вы писали:
___>Задаю вопрос по другому. Есть таблица с автоинкрементным полем. Эта таблица существует в двух БД и настроена двухсторонняя репликация этой таблицы, как быть с автоинкрементынм полем? Сразу говорю identity seed — есть чмо и отстой, поэтому не будем о этом. Итак, как?
Здравствуйте, _d_m_, Вы писали:
___>и (ты удивишься) даже бэкап там делается на горячую без остановки сервера и отключения клиентов.
Это ты к чему? Хочешь сказать, что MySQL не может делать бекап без остановки сервера и отключения клиентов?
Здравствуйте, mrTwister, Вы писали:
T>Здравствуйте, _d_m_, Вы писали:
___>>и (ты удивишься) даже бэкап там делается на горячую без остановки сервера и отключения клиентов. T>Это ты к чему? Хочешь сказать, что MySQL не может делать бекап без остановки сервера и отключения клиентов?
Чьи слова?
Из всего этого следует только то, что деплоймент, изменяющий структуру базы данных на MySQL требует обязательный down-time на время прогона скрипта (и/или создния и восстановления бекапа).
Здравствуйте, mrTwister, Вы писали:
T>Здравствуйте, dimgel, Вы писали:
D>>Вот, ты сам и подтвердил, что ACID-ом тут и не пахнет, нужно вручную. T>Скажем так, ACID в случае с DDL не полностью в том смысле, что для отката может понадобится дополнительно пара приседаний.
Да понятно. Для бешенной собаки 30 верст не крюк. Да что там фанату MySQL пара приседаний... со штангой... 120 кг...
D>>Из сказанного это никак не следует, т.к. приведённый мной сценарий рушил метаданные независимо от того, работал с базой кто-нибудь ещё или нет. D>>И если уж на то пошло, условие down-time выполнялось автоматически, т.к. обновлялка работала при инициализации servlet context. T>Если с базой никто кроме тебя во время деплоймента не работает, то тогда зачем тебе транзакция?
Так мы дойдем что они вобщем и не нужны. Затем, что если апдейт версии завалится какой-нибудь ошибкой, БД и ее структура останется как до начала апдейта.
T>>>Но даже на оракле и скл сервере, все деплойменты которые я проводил/имел отношение/наблюдал проходили с down-time'ом на время бекапа (когда было возможно), прогона скрипта (без транзакций) и первичного тестирования. Так что в данном случае не было бы никакой разницы.
D>>Это вообще о чём и к чему?
T>Это вообще к тому, что возможность проводить большой деплоймент, для которого требуется отдельная транзакция по рабочей базе хоть и полезна, но на практике редко используемая.
Да-да-да. Если у вас эта возможность не используется, то она сразу переходит в раздел редко используемых.
Здравствуйте, mrTwister, Вы писали:
T>Здравствуйте, _d_m_, Вы писали:
___>>Спасибо, посмеялся. ___>>Во первых, речь шла про план запроса. Типа такого http://files.rsdn.ru/21534/PlanPutina2.GIF , там еще мышкой наводишь например на индекс скан и смотришь что, где и почему — число строк, размер строки, io cost и многое. T>Тебе шашечки, или ехать? Или ты информацию только в картинках воспринимаешь?
Видишь ли, ехать тоже по разному можно. Можно мягко с комфортом и кондишеном, а можно кашлять и трястись в кузове самосвала по пыльной гравийке.
Здравствуйте, _d_m_, Вы писали:
___>Чьи слова? ___>
___>Из всего этого следует только то, что деплоймент, изменяющий структуру базы данных на MySQL требует обязательный down-time на время прогона скрипта (и/или создния и восстановления бекапа).
Это было не о возможности сделать бекап на работающей базе, а об откате к предыдущей рабочей версии в случае каких-либо проблем. down-time нужен чтобы данные не потерялись. В нормальных компаниях, в которых налажены процессы, возможность такого отката обязательно обеспечивается независимо от крутости сервера баз данных. Без обеспечения отката никто не позволит вообще деплоймент проводить.
Здравствуйте, mrTwister, Вы писали:
T>Здравствуйте, _d_m_, Вы писали:
___>>Да не проблема — я в MS SQL тоже легко могу использовать binary(16), и записывать, и сравнивать, и индексы строить. И?
T>Что и?
Да то, что речь идет все-таки о гуидах, а не их эмуляции в binary.
Здравствуйте, mrTwister, Вы писали:
T>Здравствуйте, _d_m_, Вы писали:
___>>Задаю вопрос по другому. Есть таблица с автоинкрементным полем. Эта таблица существует в двух БД и настроена двухсторонняя репликация этой таблицы, как быть с автоинкрементынм полем? Сразу говорю identity seed — есть чмо и отстой, поэтому не будем о этом. Итак, как?
T>Не использовать двустороннюю репликацию.
Здравствуйте, _d_m_, Вы писали:
___>>>Спасибо, посмеялся. ___>>>Во первых, речь шла про план запроса. Типа такого http://files.rsdn.ru/21534/PlanPutina2.GIF , там еще мышкой наводишь например на индекс скан и смотришь что, где и почему — число строк, размер строки, io cost и многое. T>>Тебе шашечки, или ехать? Или ты информацию только в картинках воспринимаешь?
___>Видишь ли, ехать тоже по разному можно. Можно мягко с комфортом и кондишеном, а можно кашлять и трястись в кузове самосвала по пыльной гравийке.
+1
К тому же если надо анализировать сотни запросов, то инструментарий однозначно решает.
Здравствуйте, mrTwister, Вы писали: T>Скажем так, ACID в случае с DDL не полностью в том смысле, что для отката может понадобится дополнительно пара приседаний.
Это всё равно, что быть не полностью беременной. ACID означает определённые гарантии. Если их нет — то это не ACID. "Частичного ACID", как и "частичной потокобезопасности", "частичной иммутабельности" и прочего в природе не существует.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, _d_m_, Вы писали:
___>Видишь ли, ехать тоже по разному можно. Можно мягко с комфортом и кондишеном, а можно кашлять и трястись в кузове самосвала по пыльной гравийке.
Ну не все же на такси ездят, некоторые и на метро.
Здравствуйте, mrTwister, Вы писали:
T>Здравствуйте, _d_m_, Вы писали:
___>>Видишь ли, ехать тоже по разному можно. Можно мягко с комфортом и кондишеном, а можно кашлять и трястись в кузове самосвала по пыльной гравийке.
T>Ну не все же на такси ездят, некоторые и на метро.
На метро в кузове самосвала? Оригинально. Так вам же и предлагают с комфортом ехать, а вы: нет спасибо — в самосвале лучше.