|
2.4, Aleksey (??), 18:29, 20/03/2009 [^] [^^] [^^^] [ответить] [п©Б∙╗ п©Б∙╙п©Б∙╛п©Б∙╒п©Б∙ёя▐Б■─п©Б∙÷я▐Б■▄п©Б∙╛я▐Б■─я▐Б■░]
| +/– |
В реальности все намного хуже. Мы же не учитываем порядок и ключ у таблицы. На примере: в первой таблице у Васи 100 рублей, у Пети 200. Во второй - наоборот. Просчет md5 по рублям даст один и тот же результат для этих двух таблиц. Т.е. они типа равны :)
Поэтому в реальной ситуации надо использовать ключевые поля. Пусть в таблице A два поля - обычное B и ключевое K, тогда
select md5(array_send(array(select md5('' || K) || md5('' || B) from A order by K))) as md5;
| |
|
1.6, Тормал (?), 19:07, 23/03/2009 [ответить] [↑] [п©Б∙╗ п©Б∙╙п©Б∙╛п©Б∙╒п©Б∙ёя▐Б■─п©Б∙÷я▐Б■▄п©Б∙╛я▐Б■─я▐Б■░]
| +/– |
Ну ни кто не запрещал добавлять дополнительные условия во WHERE. Я только предложил методику. Так как у меня порядка 30 миллионов записей в таблице. Мне нужно было сравнить наборы данных. И естественно я просматривал некоторые таблиц разбив на сегменты по дате например.
| |
|
2.7, konst (??), 18:15, 24/03/2009 [^] [^^] [^^^] [ответить] [п©Б∙╗ п©Б∙╙п©Б∙╛п©Б∙╒п©Б∙ёя▐Б■─п©Б∙÷я▐Б■▄п©Б∙╛я▐Б■─я▐Б■░]
| +/– |
1. а что мешает делать вывод поля таблицы в файл (используя нужный order by x,y,z), а далее сравнивать по md5 сами файлы?
2. играясь опциями LIMIT/OFFSET можно вычислить "тонкое место" (где данные не совпадают), чтобы не таскать по сети большие объемы. а далее использовать diff...
3. Для этой цели можно написать скриптик, который сам все сделает:
Напр.:
1) с помощью limit/offset выгрузит поле в 100 (1000) файликов.
2) md3sum по ним с рез-тами в файл >> md5_1 (1-й сервер), md5_2 (2-й)
3) diff md5_1 md5_2
4) если найдены расхождения - diff по "несовпадающим" файлам...
| |
|
|