Re[13]: MySQL и качество
От: criosray  
Дата: 21.06.09 10:27
Оценка:
Здравствуйте, _d_m_, Вы писали:

AB>>З.Ы. Но если кому-то совсем-совсем невмоготу и хочется именно типа GUID, то исходники открыты


___>Да-да там типа юникс вэй и прочее. А новые версии и апдейты как накатывать?


Наверно подразумевается, что Вы отправите патч, он будет утвержден, и накатан на основную ветку...
Re[17]: MySQL и качество
От: mrTwister Россия  
Дата: 21.06.09 10:28
Оценка:
Здравствуйте, _d_m_, Вы писали:

___>Даже если так — и что? GUID тем и удобен, что его можно генерировать на клиенте. А вот проблема ключа длиной 36 vs 16 — это риал.


Ничего не мешает хранить 16 байт в бинари формате.
лэт ми спик фром май харт
Re[12]: MySQL и качество
От: criosray  
Дата: 21.06.09 10:31
Оценка:
Здравствуйте, Anton Batenev, Вы писали:


AB>Если говорить непосредственно о типе поля GUID в MSSQL, то да, аналога нет. Если говорить о наличии уникальной (глобально) возрастающей последовательности, то есть. Как ее применять и применять ли (поскольку "проблем" с репликацией у MySQL нет при любом типе PK) — вопрос уже другой.


Точно. Особенно заметно проблем нету, если надо слить базы с других серверов, а в качестве PK использованы автоинкременты.
Re[18]: MySQL и качество
От: criosray  
Дата: 21.06.09 10:32
Оценка: 1 (1)
Здравствуйте, mrTwister, Вы писали:

___>>Даже если так — и что? GUID тем и удобен, что его можно генерировать на клиенте. А вот проблема ключа длиной 36 vs 16 — это риал.


T>Ничего не мешает хранить 16 байт в бинари формате.


Точно.
http://www.mysqlperformanceblog.com/2007/03/13/to-uuid-or-not-to-uuid/
Re[18]: MySQL и качество
От: _d_m_  
Дата: 21.06.09 10:38
Оценка:
Здравствуйте, criosray, Вы писали:

C>Здравствуйте, _d_m_, Вы писали:



___>>А проблема фрагментации индексов преувеличена, я бы даже не называл это проблемой. Во всяком случае в MS SQL.


C>Она не преувеличена. Из-за нее мы вынуждены перестраивать индексы частями через каждые двое суток. Всего 10-15 дней и фрагментация порядка 90%, что неприемлимо.


fillfactor, pad_index?
http://msdn.microsoft.com/ru-ru/library/ms177459.aspx
http://msdn.microsoft.com/ru-ru/library/ms189858.aspx

C>Использование sequential GUID`ов конкретно на этих PK неприемлимо.


Да — их использование зачастую неприемлимо.
Re[12]: MySQL и качество
От: _d_m_  
Дата: 21.06.09 10:43
Оценка:
Здравствуйте, Anton Batenev, Вы писали:

AB>Здравствуйте, _d_m_, Вы писали:


_>> Значит нет там поддержки GUID-ов. Обычное МыСклевкое решение — через задницу. Я в MS SQL, .Net CLR UDF-ами могу хоть звезду с неба достать.


AB>Если говорить непосредственно о типе поля GUID в MSSQL, то да, аналога нет. Если говорить о наличии уникальной (глобально) возрастающей последовательности, то есть. Как ее применять и применять ли (поскольку "проблем" с репликацией у MySQL нет при любом типе PK) — вопрос уже другой.


Это физически невозможно. И как же решили великие создатели MySQL эту проблему?
Re: Причем
От: Anton Batenev Россия https://github.com/abbat
Дата: 21.06.09 10:53
Оценка: +1
Здравствуйте, Mamut, Вы писали:

M> Причем в Enterprise tudio есть гниальная фича «показать план запроса», оторый подскажет, на каких именно данных просаживается запрос. Обычно бывает достаточно прикрутить забытый индекс — и вуаля.Для MySQL'я таких тлзов просто не существует в природе, насколько я знаю


EXPLAIN SELECT ...


SET profiling = 1;
SELECT ...;
SELECT ...;
SHOW PROFILES;
SHOW PROFILE CPU FOR QUERY 2;


Подробнее здесь и здесь.
avalon 1.0rc1 rev 247, zlib 1.2.3
Re[17]: MySQL и качество
От: Anton Batenev Россия https://github.com/abbat
Дата: 21.06.09 10:53
Оценка:
Здравствуйте, _d_m_, Вы писали:

_> Даже если так — и что? GUID тем и удобен, что его можно генерировать на клиенте.


Так и здесь можно.

_> А вот проблема ключа длиной 36 vs 16 — это риал.


Как уже говорилось, если хочешь экономить место, никто не запрещает его конвертировать в бинарное представление и заносить в BINARY(16) поле, по которому построить такой же индекс.
avalon 1.0rc1 rev 247, zlib 1.2.3
Re[13]: MySQL и качество
От: mrTwister Россия  
Дата: 21.06.09 10:57
Оценка:
Здравствуйте, _d_m_, Вы писали:

___>Это физически невозможно. И как же решили великие создатели MySQL эту проблему?


Очень просто: данные могут реплецироваться в битовом формате — байт в байт. При этом абсолютно по барабану какого они типа.
лэт ми спик фром май харт
Re[13]: MySQL и качество
От: Anton Batenev Россия https://github.com/abbat
Дата: 21.06.09 11:02
Оценка:
Здравствуйте, _d_m_, Вы писали:

_> Это физически невозможно. И как же решили великие создатели MySQL эту проблему?


Как-то так. Решение без изысков (и не без недостатков), но работает и успешно используется.
avalon 1.0rc1 rev 247, zlib 1.2.3
Re: MySQL и качество
От: quwy  
Дата: 21.06.09 12:24
Оценка:
ИМХО, просто предсмертная агония. Было уже такое, "догоним и перегоним" (по количеству, а качество по-барабану).
Re[13]: MySQL и качество
От: Anton Batenev Россия https://github.com/abbat
Дата: 21.06.09 19:45
Оценка:
Здравствуйте, _d_m_, Вы писали:

AB>>З.Ы. Но если кому-то совсем-совсем невмоготу и хочется именно типа GUID, то исходники открыты

___>Да-да там типа юникс вэй и прочее. А новые версии и апдейты как накатывать?

Как обычно — сливается тэг, накатывается патч, компилируется, при желании оборачивается в пакет и раскатывается по серверам. Для тех, кто возьмется лезть в исходники, думаю, все остальное проблем не составляет.
Re[19]: MySQL и качество
От: dimgel Россия https://github.com/dimgel
Дата: 21.06.09 20:57
Оценка: 2 (2) :)))
Здравствуйте, Mamut, Вы писали:

_>> Стоп-стоп. Какой ACID? Если для DDL его нет. Тут уже упоминали .frm файлы.

M>Ну, он в теории есть. По идее frm ожно восстановить по transaction-логам. Но это — в теории

Не знаю, как щас, но год-полтора назад ситуация была следующая:
1) запускаем скрипт, в единой транзакции обновляющий структуру базы;
2) скрипт выбрасывает исключение;
3) транзакция откатывается, включая изменения метаданных, хранимых и используемых innodb, но НЕ включая изменения в frm-файлах, используемых ядром мускуля (в т.ч. планировщиком ЕМНИП);
4) все последующие запросы к таблицам, метаданные которых рассогласованы, падают с внутренней ошибкой;
5) делаем /etc/init.d/mysqld stop;
6) ручками или скриптиком восстанавливаем frm-файлы (в документации мускуля было howto);
7) делаем /etc/init.d/mysqld start;
8) не забываем повторять про себя "во б#$% п#$#$# е#$#$#$ е#@#@ их в с#$#%# что б вы м#$^@ п#$#$%#$# cо своим е#$&@# муcкулем!" в течение всего процесса, начиная с пункта 4 (можно раньше).
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[20]: MySQL и качество
От: mrTwister Россия  
Дата: 21.06.09 21:28
Оценка:
Здравствуйте, dimgel, Вы писали:

D>Не знаю, как щас, но год-полтора назад ситуация была следующая:

D>1) запускаем скрипт, в единой транзакции обновляющий структуру базы;
D>2) скрипт выбрасывает исключение;
D>3) транзакция откатывается, включая изменения метаданных, хранимых и используемых innodb, но НЕ включая изменения в frm-файлах, используемых ядром мускуля (в т.ч. планировщиком ЕМНИП);
D>4) все последующие запросы к таблицам, метаданные которых рассогласованы, падают с внутренней ошибкой;
D>5) делаем /etc/init.d/mysqld stop;
D>6) ручками или скриптиком восстанавливаем frm-файлы (в документации мускуля было howto);
D>7) делаем /etc/init.d/mysqld start;
D>8) не забываем повторять про себя "во б#$% п#$#$# е#$#$#$ е#@#@ их в с#$#%# что б вы м#$^@ п#$#$%#$# cо своим е#$&@# муcкулем!" в течение всего процесса, начиная с пункта 4 (можно раньше).

А всего то надо было сделать бекап перед деплойментом. Из всего этого следует только то, что деплоймент, изменяющий структуру базы данных на MySQL требует обязательный down-time на время прогона скрипта (и/или создния и восстановления бекапа). Но даже на оракле и скл сервере, все деплойменты которые я проводил/имел отношение/наблюдал проходили с down-time'ом на время бекапа (когда было возможно), прогона скрипта (без транзакций) и первичного тестирования. Так что в данном случае не было бы никакой разницы.
лэт ми спик фром май харт
Re[21]: MySQL и качество
От: dimgel Россия https://github.com/dimgel
Дата: 21.06.09 21:38
Оценка:
Здравствуйте, mrTwister, Вы писали:

T>А всего то надо было сделать бекап перед деплойментом.


Вот, ты сам и подтвердил, что ACID-ом тут и не пахнет, нужно вручную. Предлагаешь два раза двухгиговую базу лопатить — один раз бэкап, второй раз внутри транзакции. Гы, а третий раз — восстановление из бэкапа. Тот же PostgreSQL, кстати, прекрасненько откатывает транзакции с DDL. Наверное потому что в нём нет этого идиотского бардака со storage engines и задвоений метаданных.

T>Из всего этого следует только то, что деплоймент, изменяющий структуру базы данных на MySQL требует обязательный down-time на время прогона скрипта (и/или создния и восстановления бекапа).


Из сказанного это никак не следует, т.к. приведённый мной сценарий рушил метаданные независимо от того, работал с базой кто-нибудь ещё или нет.
И если уж на то пошло, условие down-time выполнялось автоматически, т.к. обновлялка работала при инициализации servlet context.

T>Но даже на оракле и скл сервере, все деплойменты которые я проводил/имел отношение/наблюдал проходили с down-time'ом на время бекапа (когда было возможно), прогона скрипта (без транзакций) и первичного тестирования. Так что в данном случае не было бы никакой разницы.


Это вообще о чём и к чему?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: MySQL и качество
От: Sheridan Россия  
Дата: 21.06.09 21:56
Оценка:
quwy wrote:

> ИМХО, просто предсмертная агония. Было уже такое, "догоним и перегоним" (по количеству, а

> качество по-барабану).
Да скорей бы уже.
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[3]: MySQL и качество
От: dimgel Россия https://github.com/dimgel
Дата: 21.06.09 21:57
Оценка:
Здравствуйте, Sheridan, Вы писали:

>> ИМХО, просто предсмертная агония. Было уже такое, "догоним и перегоним" (по количеству, а качество по-барабану).

S>Да скорей бы уже.

Эту реплику, Максимко, должен был произнести я. Тебя ж не заставляют под мускуль сайты писать? Так что тебе должно быть пофиг.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: MySQL и качество
От: Sheridan Россия  
Дата: 21.06.09 22:07
Оценка: :))
dimgel wrote:

> S>Да скорей бы уже.

> Эту реплику, Максимко, должен был произнести я. Тебя ж не заставляют под мускуль сайты писать?
Но могут заставить

> Так что тебе должно быть пофиг.

Мне не пофиг
Мне же всех вас и тебя в частности жалко, ага
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
Re[21]: MySQL и качество
От: _d_m_  
Дата: 22.06.09 01:24
Оценка: +2
Здравствуйте, mrTwister, Вы писали:

T>А всего то надо было сделать бекап перед деплойментом.


На нормальных серверах с нормальными транзакциями — нет необходимости.

T>Из всего этого следует только то, что деплоймент, изменяющий структуру базы данных на MySQL требует обязательный down-time на время прогона скрипта (и/или создния и восстановления бекапа).


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

T>Но даже на оракле и скл сервере, все деплойменты которые я проводил/имел отношение/наблюдал проходили с down-time'ом на время бекапа (когда было возможно), прогона скрипта (без транзакций) и первичного тестирования. Так что в данном случае не было бы никакой разницы.


Ерунда какая-то — не нужен никакой даунтайм для с-ку-эль сервера. Ты не умеешь его правильно готовить. За оракл — не скажу, с ним не работаю.
Re[2]: Причем
От: _d_m_  
Дата: 22.06.09 01:33
Оценка:
Здравствуйте, Anton Batenev, Вы писали:

AB>Здравствуйте, Mamut, Вы писали:


M>> Причем в Enterprise tudio есть гниальная фича «показать план запроса», оторый подскажет, на каких именно данных просаживается запрос. Обычно бывает достаточно прикрутить забытый индекс — и вуаля.Для MySQL'я таких тлзов просто не существует в природе, насколько я знаю


AB>
EXPLAIN SELECT ...


AB>
AB>SET profiling = 1;
AB>SELECT ...;
AB>SELECT ...;
AB>SHOW PROFILES;
AB>SHOW PROFILE CPU FOR QUERY 2;
AB>


AB>Подробнее здесь и здесь.


Спасибо, посмеялся.
Во первых, речь шла про план запроса. Типа такого http://files.rsdn.ru/21534/PlanPutina2.GIF , там еще мышкой наводишь например на индекс скан и смотришь что, где и почему — число строк, размер строки, io cost и многое.

Во вторых, T-SQL-е есть и подобное: set statistics io, set statistics time, show plan text и прочее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.