PostgreSQL 설치 문제 해결
Mattermost는 PostgreSQL v11+를 지원합니다.
PostgreSQL v15에서는 이전 릴리스와의 호환성에 영향을 줄 수 있는 변경 사항이 소개되었습니다. PostgreSQL v15의 새로운 설치를 배포하는 경우, 다음 명령을 실행하여 Mattermost를 사용할 수 있도록 하세요: GRANT CREATE ON SCHEMA public TO PUBLIC
PostgresSQL 전체 텍스트 검색이 비-영어 default_text_search_config
을 사용하여 인덱스를 사용하지 못하는 문제
Mattermost는 PostgresSQL 데이터베이스의 전체 텍스트 검색에 default_text_search_config
을 사용하며 하드코딩된 텍스트 검색 구성과 달리 인덱스는 여전히 하드코딩된 텍스트 검색 구성 (영어)으로 생성됩니다. 결과적으로 전체 텍스트 검색은 인덱스를 사용하지 못할 수 있습니다.
Mattermost의 일부 테이블(예: Posts
또는 Users
)은 PostgreSQL의 데이터베이스 전체 텍스트 검색 기능을 개선하기 위해 GIN 인덱스를 포함합니다.
이러한 인덱스는 특정 언어에 대해 작성되어야 하며, 생성시 항상 영어로 하드코딩됩니다. 전체 텍스트 검색 쿼리는 항상 default_text_search_config
데이터베이스 설정을 사용하여 수행됩니다. 전체 텍스트 검색 기능이 인덱스를 활용하려면 쿼리에서 지정된 언어가 인덱스에 지정된 언어와 일치해야 합니다.
default_text_search_config
가 english
로 설정되지 않은 경우 GIN 인덱스는 사용되지 않을 수 있습니다. 데이터베이스 관리자는 이 문제를 해결하기 위해 원하는 특정 GIN 인덱스를 삭제하고 해당 인덱스를 default_text_search_config
의 값으로 다시 작성할 수 있습니다.
예를 들어, 서버의 기본 언어가 스페인어인 경우:
`sql
# 이전 것을 삭제하기 전에 새 이름으로 새 인덱스를 만듭니다.
CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_posts_message_txt_spanish ON posts USING gin(to_tsvector('spanish', message));
# 새 인덱스가 작동하는지 확인합니다. 작동하면 이전 것을 삭제하고 새 이름으로 변경하세요.
DROP INDEX CONCURRENTLY IF EXISTS idx_posts_message_txt;
ALTER INDEX idx_posts_message_txt_spanish RENAME TO idx_posts_message_txt;
`