임시 테이블의 크기를 제한하려면 어떻게 해야 하나요?
데이터베이스 내에 대량의 (InnoDB) 테이블이 있습니다.사용자는 JOIN을 사용하여 SELECT를 작성할 수 있기 때문에 일시적으로 큰 (따라서 온디스크) 테이블이 됩니다.디스크 용량이 너무 커서 디스크 공간이 소진되어 여러 가지 이상한 문제가 발생할 수 있습니다.
디스크가 너무 커지지 않도록 온디스크 테이블의 임시 테이블의 최대 크기를 제한하는 방법이 있습니까?tmp_table_size는 이름에도 불구하고 메모리 내 테이블에만 적용됩니다.서류상으로는 아무것도 찾을 수 없었습니다.
MariaDB 및 MySQL에는 이에 대한 옵션이 없습니다.몇 달 전에 귀하와 같은 문제에 부딪혔고, 검색을 많이 했고, NAS에서 데이터셋을 위한 특수 스토리지 영역을 생성하여 마침내 부분적으로 해결했습니다.
NAS에 폴더를 만들거나 내장 HDD에 파티션을 만듭니다. 폴더는 정의에 따라 크기가 제한된 다음 마운트하고 mysqlini에서 임시 스토리지를 이 드라이브에 할당합니다(Windows/linux 선택).
tmpdir="mnt/DBtmp/"
tmpdir="T:\"
이 변경 후 mysql 서비스를 재시작해야 합니다.
이 방법을 사용하면 드라이브가 가득 차도 온디스크 쿼리에 대한 "이상한 문제"가 계속 발생하지만 다른 문제는 해결됩니다.
옵션에 대한 논의가 있었다.disk-tmp-table-size
그러나 커밋이 리뷰를 통과하지 못했거나 다른 이유로 손실된 것 같습니다(최소한 옵션은 현재 코드베이스에 존재하지 않습니다).
스토리지 증가를 제외하고 다음 최선의 방법은 온디스크 임시 테이블을 만들지 않도록 MySQL을 조정하는 것입니다.DBA에 대한 몇 가지 팁이 있습니다.RAM이 충분하고 Disk 저장소만 부족한 경우 "on-Disk" 임시 테이블 저장용 RAMDisk를 생성하는 것도 가능합니다.
MySQL에 대한 질문에는 답변하지 않지만 MariaDB에는 tmp_disk_table_size가 있으며 max_join_size 설정도 유용할 수 있습니다.하지만,tmp_disk_table_size
MyISAM 또는 Aria 테이블 전용이며 InnoDB용이 아닙니다.또한.max_join_size
는 결합의 예상 행 수에만 적용되며 실제 행 수는 적용되지 않습니다.밝은 면에서는, 에러가 거의 즉시 발생합니다.
언급URL : https://stackoverflow.com/questions/43611304/how-can-i-limit-the-size-of-temporary-tables
'programing' 카테고리의 다른 글
Python에서 로지스틱 Sigmoid 함수를 계산하는 방법은 무엇입니까? (0) | 2022.12.30 |
---|---|
MariaDB의 높은 메모리 사용량을 수정하는 방법 (0) | 2022.12.30 |
@Null 주석 사용법 (0) | 2022.12.20 |
Python foreach 등가물 (0) | 2022.12.20 |
php 사이트의 브라우저 캐시를 방지하는 방법 (0) | 2022.12.20 |