|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
SELECT * FORM table выдает ошибку чт оне может прочитать блок. SELECT * FROM table LIMIT 10 - выполняется SELECT * FROM table LIMIT 20 - не выполняется SELECT * FROM table LIMIT 10 OFFSET 50 - не выполняется Есть ли способ вытащить часть целых данных? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 16:27 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
с order by вообще никакой запрос не выполняется ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 16:29 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Константин Сергеевич ДереркSELECT * FORM table выдает ошибку чт оне может прочитать блок. SELECT * FROM table LIMIT 10 - выполняется SELECT * FROM table LIMIT 20 - не выполняется SELECT * FROM table LIMIT 10 OFFSET 50 - не выполняется Есть ли способ вытащить часть целых данных? если есть primary key id какой нить - то выбирать перебирая id от 0 и до максимального значения все те записи что получится выбрать а вообще реплика и backups - наше все. -- Maxim Boguk dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 16:40 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Maxim BogukКонстантин Сергеевич ДереркSELECT * FORM table выдает ошибку чт оне может прочитать блок. SELECT * FROM table LIMIT 10 - выполняется SELECT * FROM table LIMIT 20 - не выполняется SELECT * FROM table LIMIT 10 OFFSET 50 - не выполняется Есть ли способ вытащить часть целых данных? если есть primary key id какой нить - то выбирать перебирая id от 0 и до максимального значения все те записи что получится выбрать а вообще реплика и backups - наше все. -- Maxim Boguk dataegret.ru А может быть есть готовый скрипт, с обработкой ошибок? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 16:59 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Константин Сергеевич ДереркSELECT * FORM table выдает ошибку чт оне может прочитать блок. SELECT * FROM table LIMIT 10 - выполняется SELECT * FROM table LIMIT 20 - не выполняется SELECT * FROM table LIMIT 10 OFFSET 50 - не выполняется Есть ли способ вытащить часть целых данных? попробуйте перебирать по 1-му ctid--у. если это ваш побитый файл, конечно. а не партицированная табличка. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 17:46 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
qwwqКонстантин Сергеевич ДереркSELECT * FORM table выдает ошибку чт оне может прочитать блок. SELECT * FROM table LIMIT 10 - выполняется SELECT * FROM table LIMIT 20 - не выполняется SELECT * FROM table LIMIT 10 OFFSET 50 - не выполняется Есть ли способ вытащить часть целых данных? попробуйте перебирать по 1-му ctid--у. если это ваш побитый файл, конечно. а не партицированная табличка. тоже так думал, но там же формат (1 0)(1 1) и тд. Наверное проще по id. Проблема уже не срочная, т.к. табличку из экспорта востановили, хочу для себя скрипт сделать на будущее, с обработкой исключений. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 17:59 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Константин Сергеевич Дерерк, https://dba.stackexchange.com/questions/65964/how-do-i-decompose-ctid-into-page-and-row-numbers авторThis is the data type of the system column ctid. A tuple ID is a pair ( block number, tuple index within block ) that identifies the physical location of the row within its table. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 18:34 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
цтид генерировать можно примерно так ~ Код: sql 1. 2. 3. 4. 5. 6.
-- обходить таблу в do, позаписно (или поблочно) {for loop}, с exception when для блока. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 18:52 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
qwwqцтид генерировать можно примерно так ~ Код: sql 1. 2. 3. 4. 5. 6.
-- обходить таблу в do, позаписно (или поблочно) {for loop}, с exception when для блока. (0, 70) - потенциально мало... максимально 255-292 (смотря от архитектуры там кажется align есть до 28 или 32 байт в самом минимуме) но по сути - да. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 19:53 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Константин Сергеевич ДереркSELECT * FORM table выдает ошибку чт оне может прочитать блок. SELECT * FROM table LIMIT 10 - выполняется SELECT * FROM table LIMIT 20 - не выполняется SELECT * FROM table LIMIT 10 OFFSET 50 - не выполняется Есть ли способ вытащить часть целых данных? Вы лучше расскажите как вы этого добились. За 15 лет работы и больше 500 серверов с postgresql - не помню чтобы такое было хоть 1 раз. Это или очень постараться надо или совсем уж из говна и палок сервер собирать. -- Maxim Boguk dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 19:58 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Пытаюсь перелить данные из поврежденной таблички - не получается. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 12:06 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Константин Сергеевич ДереркПытаюсь перелить данные из поврежденной таблички - не получается. Берите платную поддержку если сами не можете разобраться :). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 12:07 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Пытаюсь так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Отваливается с ошибкой: Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 12:11 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
как эту ошибку подваить? точнее надо как-то пропустить поврежденные записи, вызывающие эту ошибку. и встаивть только целые записи в новую таблицу. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 12:12 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Константин Сергеевич Дерерккак эту ошибку подваить? точнее надо как-то пропустить поврежденные записи, вызывающие эту ошибку. и встаивть только целые записи в новую таблицу. так вам написали line 5 блин line 5 это SELECT ct.ctid FROM corrupted_table cl JOIN (SELECT (point(b,n))::text::tid AS ctid FROM generate_series(0, 1024) b,generate_series(0, 10240) n) вот там и лечите (и заодно учитесь читать что вам база пишет думать головой). -- Maxim Boguk dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 12:23 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Maxim BogukКонстантин Сергеевич Дерерккак эту ошибку подваить? точнее надо как-то пропустить поврежденные записи, вызывающие эту ошибку. и встаивть только целые записи в новую таблицу. так вам написали line 5 блин line 5 это SELECT ct.ctid FROM corrupted_table cl JOIN (SELECT (point(b,n))::text::tid AS ctid FROM generate_series(0, 1024) b,generate_series(0, 10240) n) вот там и лечите (и заодно учитесь читать что вам база пишет думать головой). -- Maxim Boguk dataegret.ru ну конечно селект не идет, т.к. данные повреждены! как обойти это? чтобы только здоровые данные прочлись? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 12:58 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
спасибо, вроде заработало. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 13:40 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Maxim Bogukqwwqцтид генерировать можно примерно так ~ Код: sql 1. 2. 3. 4. 5. 6.
-- обходить таблу в do, позаписно (или поблочно) {for loop}, с exception when для блока. (0, 70) - потенциально мало... максимально 255-292 (смотря от архитектуры там кажется align есть до 28 или 32 байт в самом минимуме) но по сути - да. А скажите, можно как-нибудь определить пределы SELECT (point(b,n))::text::tid AS ctid FROM generate_series(0, 10 ) b,generate_series(0, 70 ) n для конкретной таблицы (которая повреждена) ? а то время выполнения завистит от этих параметров в геометрической прогрессии... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 13:53 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
SELECT MAX(ctid) FROM таблица вызывает ошибку ERROR: could not read block 1181 of relation base/16385/16807: read only 4096 of 8192 bytes SQL-состояние: XX001 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 14:27 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Константин Сергеевич ДереркMaxim Bogukпропущено... (0, 70) - потенциально мало... максимально 255-292 (смотря от архитектуры там кажется align есть до 28 или 32 байт в самом минимуме) но по сути - да. А скажите, можно как-нибудь определить пределы SELECT (point(b,n))::text::tid AS ctid FROM generate_series(0, 10 ) b,generate_series(0, 70 ) n для конкретной таблицы (которая повреждена) ? а то время выполнения завистит от этих параметров в геометрической прогрессии... см выше : автор(0, 70) - потенциально мало... максимально 255-292 (смотря от архитектуры там кажется align есть до 28 или 32 байт в самом минимуме) но по сути - да. геометрическую вы сильно получили. вам надо 2 вложенных Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
и никаких генераций и геометрических. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 15:06 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
qwwqКонстантин Сергеевич Дереркпропущено... А скажите, можно как-нибудь определить пределы SELECT (point(b,n))::text::tid AS ctid FROM generate_series(0, 10 ) b,generate_series(0, 70 ) n для конкретной таблицы (которая повреждена) ? а то время выполнения завистит от этих параметров в геометрической прогрессии... см выше : автор(0, 70) - потенциально мало... максимально 255-292 (смотря от архитектуры там кажется align есть до 28 или 32 байт в самом минимуме) но по сути - да. геометрическую вы сильно получили. вам надо 2 вложенных Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
и никаких генераций и геометрических. 10 и 70 мало. на 1024 и 1024 достает 15 тыс записей. Запустил на 2048 - выполняется уже два часа. Как можно определить необходимый и достаточный максимум для этого длиапазона? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 15:13 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
ну или можно как-то ускорить процесс? уже несколько часов фигачит. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 17:10 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Константин Сергеевич Дерерк10 и 70 мало. на 1024 и 1024 достает 15 тыс записей. Запустил на 2048 - выполняется уже два часа. Как можно определить необходимый и достаточный максимум для этого длиапазона? кол-во записей в блоке ограничено сверху размером блока и минимальным размером записи как писали выше: автормаксимально 255-292 спросить where ctid >.... не получится -- план сваливается в фуллскан. можете идти не позаписно , а поблочно, т.к. на where ctid =any(ARRAY[...]) даёт в плане примерно такое Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
как получить оценку сверху на колв-во блоков -- хз. присмотритесь к Код: sql 1. 2. 3. 4.
можно конечно на пи умножить, для верности. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 17:12 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
[quot qwwq] автормаксимально 255-292 т.е. это второе число из скобочек? Просто первое точно около 500 есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 17:14 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Константин Сергеевич Дереркну или можно как-то ускорить процесс? уже несколько часов фигачит.код покажите. интересно посмотреть. могабыть что и подскажется /*мы в цырке не смеёмса*/ ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 17:14 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
[quot Константин Сергеевич Дерерк]qwwqпропущено... т.е. это второе число из скобочек? Просто первое точно около 500 есть. мальтчик, ты дуяк ? пейвое чисьо -- это номей бьока, он, номер, могабыть очень бальшоой втайое -- это номей запейси в блоке блок обычно 8кб запись не менее .... (спросить у максима, оверхед немного от версии пж плавает) т.е. запейсей на блоке не более .... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 17:19 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
qwwqпропущено... мальтчик, ты дуяк ? пейвое чисьо -- это номей бьока, он, номер, могабыть очень бальшоой втайое -- это номей запейси в блоке блок обычно 8кб запись не менее .... (спросить у максима, оверхед немного от версии пж плавает) т.е. запейсей на блоке не более .... Правельно ли понял что максимальная может быть (8000,292) ? чет запутался ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 17:29 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
qwwq ,на счет кода, там в цикле выполняются эти действия: [quot Константин Сергеевич Дерерк] INSERT INTO kdv_repaired_table SELECT * FROM corrupted_table cl WHERE cl.ctid=tid_var; EXCEPTION --WHEN undefined_column THEN WHEN OTHERS THEN RAISE NOTICE ''SQLSTATE: %'', SQLSTATE; END; [/src] ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 17:31 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Константин Сергеевич Дереркqwwq ,на счет кода, там в цикле выполняются эти действия: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
блок не читается целиком, думается. зачем вам 292 нотиса на блок выдавать ? т.ч. покажите весь код. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 17:37 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
qwwqКонстантин Сергеевич Дереркqwwq ,на счет кода, там в цикле выполняются эти действия: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
блок не читается целиком, думается. зачем вам 292 нотиса на блок выдавать ? т.ч. покажите весь код. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 17:40 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
>зачем вам 292 нотиса на блок выдавать ? а сколько лучше сделать максимально? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 17:42 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Константин Сергеевич Дерерк, А еще очень интересно прикинуть сколько там в транзакции savepoints получается (там будет со временем сильно нелинейное замедление от количества savepoints). И подумать почему такие вещи не делают в транзакции или хранимке а вызывают запросы внешним приложением. -- Maxim Boguk dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 17:42 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Maxim BogukКонстантин Сергеевич Дерерк, А еще очень интересно прикинуть сколько там в транзакции savepoints получается (там будет со временем сильно нелинейное замедление от количества savepoints). И подумать почему такие вещи не делают в транзакции или хранимке а вызывают запросы внешним приложением. -- Maxim Boguk dataegret.ru можно ли там commit впихнуть после каждого инсерта и ускорит ли это процедуру? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 17:45 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Константин Сергеевич ДереркMaxim BogukКонстантин Сергеевич Дерерк, А еще очень интересно прикинуть сколько там в транзакции savepoints получается (там будет со временем сильно нелинейное замедление от количества savepoints). И подумать почему такие вещи не делают в транзакции или хранимке а вызывают запросы внешним приложением. -- Maxim Boguk dataegret.ru можно ли там commit впихнуть после каждого инсерта и ускорит ли это процедуру? Нельзя... транзакции внутри pl/pgsql (да и прочих pl/*) - не поддерживаются. Я не зря про внешнее приложение написал :). -- Maxim Boguk dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 17:52 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Maxim BogukКонстантин Сергеевич Дереркпропущено... можно ли там commit впихнуть после каждого инсерта и ускорит ли это процедуру? Нельзя... транзакции внутри pl/pgsql (да и прочих pl/*) - не поддерживаются. Я не зря про внешнее приложение написал :). -- Maxim Boguk dataegret.ru а как вызвать внешнее приложение из кода? о_О ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 17:57 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Maxim BogukКонстантин Сергеевич Дереркпропущено... можно ли там commit впихнуть после каждого инсерта и ускорит ли это процедуру? Нельзя... транзакции внутри pl/pgsql (да и прочих pl/*) - не поддерживаются. Я не зря про внешнее приложение написал :). -- Maxim Boguk dataegret.ru use dblink ,Luke ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 17:57 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Константин Сергеевич Дерерк а как вызвать внешнее приложение из кода? о_О CREATE EXTENSION dblink; ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 17:58 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
qwwqКонстантин Сергеевич Дерерка как вызвать внешнее приложение из кода? о_О CREATE EXTENSION dblink; он установлен, просто там куча разных вызовов. dblink_build_sql_insert например. но описание там мутное какое-то Как лучше вызвать инсерт в данном случае? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 18:01 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Константин Сергеевич Дереркqwwqпропущено... CREATE EXTENSION dblink; он установлен, просто там куча разных вызовов. dblink_build_sql_insert например. но описание там мутное какое-то Как лучше вызвать инсерт в данном случае? как напишешь, так и лучше я бы dblink_exec дергал, думается. а чтобы не обрабатывать ошибки в головной -- fail_on_error:=true , и вперед ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 18:06 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
qwwqКонстантин Сергеевич Дереркпропущено... он установлен, просто там куча разных вызовов. dblink_build_sql_insert например. но описание там мутное какое-то Как лучше вызвать инсерт в данном случае? как напишешь, так и лучше я бы dblink_exec дергал, думается. а чтобы не обрабатывать ошибки в головной -- fail_on_error:=true , и вперед вот тако вылезло Код: sql 1.
как закрывать грамотно соединения, чтобы коннекты не висели? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 18:44 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Константин Сергеевич Дерерк, а незачем их открывать бессчётно. открыли одно, именное. и в него ходитя ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2017, 19:46 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
qwwqКонстантин Сергеевич Дерерк, а незачем их открывать бессчётно. открыли одно, именное. и в него ходитя ERROR: duplicate connection name ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2017, 10:29 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Константин Сергеевич ДереркqwwqКонстантин Сергеевич Дерерк, а незачем их открывать бессчётно. открыли одно, именное. и в него ходитя ERROR: duplicate connection name example dblink--connection Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2017, 11:28 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
qwwqКонстантин Сергеевич Дереркпропущено... ERROR: duplicate connection name example dblink--connection Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.
Благодарю. Получилось реализовать через дблинки, но работает еще медленнее чем инсерт напрямую. судя по сообщениям о невозможности считать строку. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2017, 16:15 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
вообще жаль что в постгресс нет стандартного механизма востановления таблички при повреждении ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2017, 16:36 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Константин Сергеевич Дерерк<> Получилось реализовать через дблинки, но работает еще медленнее чем инсерт напрямую. судя по сообщениям о невозможности считать строку. код всё такой же ? позаписный ? идите поблочно. == есть такая мысль, если блок не читается -- он не читается целиком. могу врать. (проверьте на каком либо точно битом блоке -- сможете ли найти хоть одну запись в нем, адресуясь ctid-ом) тогда при первой ошибке в блоке переходите к новому. и писать можно сразу весь блок . -- я же писал ( 20677291 ) примерно : Код: sql 1. 2. 3. 4. 5. 6.
где 10000 -- номер блока. 0--270 номера записей в блоке. (если табличка широкая -- можно взять уже. и кажется они (строки) таки с 1 идут. блоки -- как положено -- с 0 ). но в любом случае это забавный способ ковырять землю мелкоскопом. имхо. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2017, 16:39 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Константин Сергеевич Дерерквообще жаль что в постгресс нет стандартного механизма востановления таблички при повреждении если вы теряете записи -- кто ж вам сторож, злобному буратинию. выковыривать куски из обломков -- это не дело в любом случае. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2017, 16:42 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
qwwqесть такая мысль, если блок не читается -- он не читается целиком. могу врать. судя по всему, так и есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2017, 16:44 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
кстати, автовакуум блоки меняет местами? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2017, 16:45 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Константин Сергеевич Дерерккстати, автовакуум блоки меняет местами? Нет. И даже записи местами не меняет. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2017, 18:20 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Maxim BogukКонстантин Сергеевич Дерерккстати, автовакуум блоки меняет местами? Нет. И даже записи местами не меняет. Хорошо, однако его на всякий случай отключил. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2017, 18:27 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
В общем, по наблюдениям, обработка идет очень неравномерно. Некоторые строки висят по несколько минут. А иногда сотня строк в секунду обрабатывается. С блокировками не связано. Наверное диск вот вот развалится просто. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2017, 18:29 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Константин Сергеевич ДереркНекоторые строки висят по несколько минут. А иногда сотня строк в секунду обрабатывается. из существующих естественно. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2017, 18:29 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Константин Сергеевич Дерерквообще жаль что в постгресс нет стандартного механизма востановления таблички при повреждении Стандартный механизм восстановления называется hot standby реплика (или base backup + wal archive). -- Maxim Boguk dataegret.ru - лучшая русскоязычная поддержка PostgreSQL ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2017, 18:33 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Maxim BogukКонстантин Сергеевич Дерерквообще жаль что в постгресс нет стандартного механизма востановления таблички при повреждении Стандартный механизм восстановления называется hot standby реплика (или base backup + wal archive). -- Maxim Boguk dataegret.ru - лучшая русскоязычная поддержка PostgreSQL На каждую кофемолку hot standby не сделать... было бы очень удобно что-то типа DBCC CHECK TABLE. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2017, 18:41 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Константин Сергеевич ДереркMaxim Bogukпропущено... Стандартный механизм восстановления называется hot standby реплика (или base backup + wal archive). -- Maxim Boguk dataegret.ru - лучшая русскоязычная поддержка PostgreSQL На каждую кофемолку hot standby не сделать... было бы очень удобно что-то типа DBCC CHECK TABLE. На кофемолке надо sqlite держать :). Или хотя бы ежедневный pg_dump куда то на другой сервер. -- Maxim Boguk dataegret.ru - лучшая русскоязычная поддержка PostgreSQL ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2017, 20:47 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Maxim Boguk, и будет тот же плач на форуме про sqllite. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2017, 08:53 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
mefmanMaxim Boguk, и будет тот же плач на форуме про sqllite. Это уже не жалко совсем :). Баба с возу - кобыле легче. -- Maxim Boguk dataegret.ru - лучшая русскоязычная поддержка PostgreSQL ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2017, 09:09 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Работает :) Спасибо за помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2017, 12:35 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
qwwqкак получить оценку сверху на колв-во блоков -- хз. присмотритесь к Код: sql 1. 2. 3. 4.
можно конечно на пи умножить, для верности. А скажите, если заполненный блок начинается на с 0-с а 100000-го, например, до этого все пустые. relpages в запросе это учитывает? Т.е. он выдает примерное количество с учетом незаполненных блоков? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2017, 12:41 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Константин Сергеевич Дереркqwwqкак получить оценку сверху на колв-во блоков -- хз. присмотритесь к Код: sql 1. 2. 3. 4.
можно конечно на пи умножить, для верности. А скажите, если заполненный блок начинается на с 0-с а 100000-го, например, до этого все пустые. relpages в запросе это учитывает? Т.е. он выдает примерное количество с учетом незаполненных блоков? replapages выдает точное значение исходя из размера файла на диски с т.з. базы. Так что ему без разницы на заполненные блоки или нет. -- Maxim Boguk dataegret.ru - лучшая русскоязычная поддержка PostgreSQL ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2017, 15:07 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Константин Сергеевич Дереркqwwqкак получить оценку сверху на колв-во блоков -- хз. присмотритесь к Код: sql 1. 2. 3. 4.
можно конечно на пи умножить, для верности. А скажите, если заполненный блок начинается на с 0-с а 100000-го, например, до этого все пустые. relpages в запросе это учитывает? Т.е. он выдает примерное количество с учетом незаполненных блоков? это вопрос скорее о системном кодинге. файло растет минимум на блок. скорее -- на кучку блоков фикс. размера. думается это происходит так -- прирезали ("низким" образом) к файлу кучку блоков -- переписали значение в системной табле. если не скучно изучать системное -- дерзайте . а пустой блок -- забит либо пустыми записями (0), либо удаленными. но табличке-то (её файлу) он принадлежит. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2017, 15:19 |
|
навернулась табличка. как вытянуть часть данных?
|
|||
---|---|---|---|
#18+
Maxim BogukКонстантин Сергеевич Дереркпропущено... А скажите, если заполненный блок начинается на с 0-с а 100000-го, например, до этого все пустые. relpages в запросе это учитывает? Т.е. он выдает примерное количество с учетом незаполненных блоков? replapages выдает точное значение исходя из размера файла на диски с т.з. базы. Так что ему без разницы на заполненные блоки или нет. -- Maxim Boguk dataegret.ru - лучшая русскоязычная поддержка PostgreSQL получается можно ориентироваться на это значение из запроса как максимальное - круто! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2017, 15:21 |
|
|
start [/forum/topic.php?all=1&fid=53&tid=1996324]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
73ms |
get tp. blocked users: |
1ms |
others: | 311ms |
total: | 456ms |
0 / 0 |