100GB 크기의 postgresql 데이터베이스가 있습니다. 테이블 중 하나에 약 5 억 항목이 있습니다. 빠른 데이터 입력을 위해 일부 데이터가 반복되어 나중에 정리 된 상태로 남았습니다. 열 중 하나를 사용하여 행을 고유 한 것으로 식별 할 수 있습니다. PostgreSQL를위한 유사한 아무것도큰 postgresql 데이터베이스 테이블에서 중복 행을 삭제합니다.
ALTER IGNORE TABLE table_name ADD UNIQUE (location_id, datetime)
있습니까 :
나는 MySQL을위한 솔루션을 제안 this stackoverflow question 발견?
그룹별로 행 번호를 삭제하려고 시도했지만 두 경우 모두 몇 시간이 지나면 컴퓨터의 메모리가 부족합니다.
SELECT reltuples FROM pg_class WHERE relname = 'orders';
reltuples
-------------
4.38543e+08
(1 row)
실행중인 테이블 DDL 및 삭제 명령문을 표시 할 수 있습니까? 삭제 횟수를 선택 개수 (*)로 변경하면 삭제 타겟팅의 행 수가 얼마나됩니까? – Kuberchaun
@JustBob select count (1)가 멈추기까지 1 시간 이상이 걸렸습니다. – nurettin
제 아이디어는 일괄 적으로 삭제하는 것이 었습니다. 나는 당신의 삭제가 2 개의 줄 또는 3 억을 지나고 있는지 궁금했다. 시퀀스 인 멋진 인덱스 열이있는 경우 행 집합에서 스 와이프하고 거기에서 삭제할 수 있습니다. min과 max 사이의 id를 테이블에서 루프 삭제하려면 python 스크립트 나 다른 것을 작성해야합니다. min과 max가 마지막보다 높은 범위로 변경되지만 여전히 50,000 개의 레코드만을 말하는 테이블의 끝을 칠 때까지 이것을하십시오. 이해가 되니? – Kuberchaun