programing

match()를 사용하여 ()에 대해 Mariadb 쿼리의 메모리가 부족합니다.

cafebook 2023. 8. 26. 12:17
반응형

match()를 사용하여 ()에 대해 Mariadb 쿼리의 메모리가 부족합니다.

매우 큰 테이블(약 50GB)이 있지만 열이 거의 없습니다.

CREATE TABLE my_table (
    id BIGINT(20) NOT NULL AUTO_INCREMENT,
    id_sec BIGINT(20) NULL,
    full_name VARCHAR(100) NULL DEFAULT NULL,
    PRIMARY KEY (id),
    FULLTEXT INDEX fts_full_name (full_name)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB

다음 쿼리를 실행할 때:

SELECT * FROM my_table WHERE MATCH(full_name) AGAINST('lastname middle first ' IN BOOLEAN MODE)

SELECT * FROM my_table WHERE MATCH(full_name) AGAINST('lastname middle first ')

SELECT * FROM my_table WHERE MATCH(full_name) AGAINST('lastname middle first ' IN BOOLEAN MODE) LIMIT 1000

SELECT * FROM my_table WHERE MATCH(full_name) AGAINST('lastname middle first ') LIMIT 1000

SELECT * FROM my_table WHERE MATCH(full_name) AGAINST('lastname middle first ' IN BOOLEAN MODE) LIMIT 100

SELECT * FROM my_table WHERE MATCH(full_name) AGAINST('lastname middle first ') LIMIT 100

가끔 다음 오류 메시지를 보냅니다.

SQL Error (128): Table handler out of memory

하지만 제가 실행할 때는 그런 일이 일어나지 않습니다.

SELECT * FROM my_table WHERE MATCH(full_name) AGAINST('+lastname +middle +first ' IN BOOLEAN MODE)

SELECT * FROM my_table WHERE MATCH(full_name) AGAINST('+lastname +middle +first ')

다음 값을 사용해 보았으나 개선되지 않았습니다.

--key-buffer-size=20M 
--tmp-table-size=2G 
--thread-pool-max-threads=10 
--max-connections=100 
--max-heap-table-size=2G 
--innodb-buffer-pool-size=4G

무슨 일이 일어날지 아는 사람?아니면 어떻게 수정할 수 있습니까?

서버가 Windows 10(x64), 10.3.12-MariaDB(x64), 32GB RAM, core i7에서 실행 중입니다.

감사해요.

아래의 세 가지 변수에 대해 읽고 이들 변수를 사용하여 실험해 보십시오.

| innodb_ft_cache_size            | 8000000    |
| innodb_ft_result_cache_limit    | 2000000000 |
| innodb_ft_total_cache_size      | 640000000  |

성공하지 못한 경우 bugs.mysql.com 에 버그 보고서를 제출합니다(그리고 버그 번호를 여기에 게시합니다).

innodb_buffer_pool_size를 메모리의 약 80%로 설정해야 합니다.

mysql 또는 mariadb에 사용할 수 있습니다.innodb는 mariadb 문서에서 innodb를 참조하십시오. https://mariadb.com/kb/en/innodb-system-variables/ #innodb_bul_pool_size

mysql 또는 mariadb 구성 파일 편집:

[mysqld]
innodb_buffer_pool_size=50G

mysql 서버 다시 시작

언급URL : https://stackoverflow.com/questions/55151872/mariadb-query-runs-out-of-memory-with-use-of-match-against

반응형