database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 31285 게시물 읽기
No. 31285
대용량 delete query 속도 향상에 대해서 추가적으로~~
작성자
천방지축(freesky)
작성일
2020-04-07 16:40ⓒ
2020-04-10 13:43ⓜ
조회수
803

 천만 이상건의 데이터를 점검때마다 지울때 삭제 속도를 높이고 싶습니다.

test_table 는  id는 parimary key로 잡혀 있고 중복 인덱스에도 잡혀있습니다.

예로 이런 쿼리를 실행시 'delete from test_table where id !=0;'  이런 한줄에 대한 쿼리를 할 시 데이터가 천만 이상 건일시 오래 걸립니다.

이럴 경우 좀 더 빠른 delete 쿼리문을 만들고 싶은데 알고싶습니다.

대용량을 지우고 난뒤는 optimize는 꼭 해줍니다.

이 글에 대한 댓글이 총 3건 있습니다.

일정건수로 나누어 돌리는 방법이 있군요.

http://mysql.rjweb.org/doc.php/deletebig

테이블을 새로 만들고 데이터를 insert 하는 방식도 있습니다만..상황에 따라 방식을 선택해야겠네요.

정상규(pajama)님이 2020-04-07 16:58에 작성한 댓글입니다.

1. id = 0 인 자료만 별도의 테이블에 넘겨놓고
2. Truncate Table
3. id = 0 인 자료 Insert

마농(manon94)님이 2020-04-08 08:54에 작성한 댓글입니다.

그래서 프로시저처리하려고 하는데  DECLARE openCursor CURSOR FOR SELECT count(*) FROM tb_test WHERE status != 0; 값 얻어서 i에 넣고 l적정 값(대략 1000000) 을 limit 값에 넣고 DELETE FROM tb_test WHERE status != 0 limit valmax; 해서 데이터를 지우고 남은 지워야할 데이터를 계속 줄여나가면서 set i = i - valmax; 처리 하려는데 괜찮을까요?DELETE FROM tb_test WHERE status != 0 order by sequence limit valmax; 이게 나을까요?

천방지축(freesky)님이 2020-04-10 13:03에 작성한 댓글입니다.
이 댓글은 2020-04-10 13:53에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
31290트랜젝션 안의 restful api 호출 [2]
기훈
2020-05-23
476
31289Master DB를 Slave DB에 누적시키기 [1]
man
2020-05-12
547
31288단어장 앱을 만드는 중인데 질문이 있습니다 [8]
2020-05-06
592
31285대용량 delete query 속도 향상에 대해서 추가적으로~~ [3]
천방지축
2020-04-07
803
31284Mysql 서버 설치 및 matlab 이용한 원격 접속문제 질문드려요. [1]
전주일
2020-03-30
634
31283mariadb lte 모뎀으로 연결하는법.. 초보 중 초보입니다...
이창율
2020-03-13
808
31282여러개의 행값을 하나의 열로 조회되게 할수있나요? [1]
이기자
2020-03-12
686
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2020 DSN, All rights reserved.
작업시간: 0.045초, 이곳 서비스는
	PostgreSQL v13.1으로 자료를 관리합니다