이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 11711|회답: 0

[출처] MySQL 구성 파일 my.cnf가 자세히 설명되어 있습니다

[링크 복사]
게시됨 2017. 11. 13. 오전 11:55:59 | | |
MySQL 실행 매개변수를 조정하고, /etc/my.cnf 파일을 수정하세요. MySQL 실행 매개변수를 MySQL을 재시작 후 적용되도록 조정하세요. MySQL 4 버전 이후에는 일부 내부 변수를 MySQL 런타임에 설정할 수 있지만, MySQL이 재시작되면 무효가 됩니다.
MySQLD 프로그램 - 디렉터리 및 파일
basedir = path # 주어진 디렉터리를 루트 디렉터리(설치 디렉터리)로 사용합니다.
Datadir = path # 주어진 디렉터리에서 데이터베이스 파일을 읽습니다.
pid-file = filename # mysqld 프로그램이 프로세스 ID를 저장할 파일을 지정하세요(UNIX/Linux 시스템에서만 사용 가능);

[mysqld]                        
socket = /tmp/mysql.sock # MySQL 클라이언트 프로그램과 서버 간 로컬 통신을 위한 소켓 파일을 지정합니다(기본값은 리눅스에서 /var/lib/mysql/mysql.sock 파일입니다).
port=3306 # MsSQL이 듣는 포트를 지정합니다
key_buffer = 384M # key_buffer는 블록 인덱싱에 사용되는 버퍼의 크기로, 모든 읽기 및 다중 쓰기에 대해 더 잘 처리하는 인덱스를 증가시킵니다.
                               인덱스 블록은 버퍼링되어 모든 스레드가 공유하며, key_buffer의 크기는 메모리 크기에 따라 달라집니다.
table_cache = 512 # 모든 스레드에 대해 열린 테이블 수. 이 값을 늘리면 mysqld가 요구하는 파일 디스크립터 수가 증가합니다. 자주 데이터 테이블을 여는 부담을 피할 수 있습니다
sort_buffer_size = 2M # 정렬해야 할 각 스레드마다 해당 크기의 버퍼를 할당하세요. 이 값을 증가시키면 ORDER BY 또는 GROUP BY 연산이 가속화됩니다.
                               참고: 이 매개변수에 해당하는 할당된 메모리는 각 연결에만 독점적입니다! 연결이 100개라면 실제로 할당된 총 정렬 버퍼 크기는 100×6 = 600MB입니다
read_buffer_size = 2M # 읽기 쿼리 작업에 사용할 수 있는 버퍼 크기입니다. sort_buffer_size와 마찬가지로, 이 매개변수에 대응하는 할당된 메모리도 각 연결에 독점적입니다.
query_cache_size = 32M # MySQL 쿼리 결과 버퍼의 크기를 지정합니다
read_rnd_buffer_size = 8M # 열 포인터를 사용해 정렬 후 매개변수를 무작위로 읽도록 변경하세요.
myisam_sort_buffer_size =64M # MyISAM 테이블이 변경될 때 재정렬하기 위해 필요한 버퍼
thread_concurrency = 8 # 최대 동시 스레드 수는 서버의 논리 ×CPU 수로 설정되며, CPU가 H.T 하이퍼스레딩을 지원한다면 × 2개가 됩니다
thread_cache = 8 # #缓存可重用的线程数
skip-locking #은 MySQL의 외부 잠금을 피하고 오류 가능성을 줄이며 안정성을 향상시킵니다.
[mysqldump]
max_allowed_packet =16M # 서버와 클라이언트 간에 전송할 수 있는 최대 정보 패킷

[마이삼칙]
key_buffer = 256M
sort_buffer = 256M
read_buffer = 2M
write_buffer = 2M

기타 선택 매개변수:
back_log = 384
    MySQL의 가능한 연결 수를 지정합니다.
    MySQL 메인 스레드가 매우 짧은 시간 내에 매우 많은 수의 연결 요청을 받으면 이 매개변수가 적용되고, 메인 스레드는 연결을 확인하고 새 스레드를 시작하는 데 짧은 시간을 걸립니다.
    back_log 매개변수의 값은 MySQL이 일시적으로 새로운 요청에 응답하지 않기 전까지 스택에 몇 개의 요청을 저장할 수 있는지를 나타냅니다.
    시스템에 짧은 시간 내에 많은 연결이 있을 경우, 들어오는 TCP/IP 연결을 위한 청취 큐 크기를 지정하는 이 매개변수의 값을 늘려야 합니다.
    운영체제보다 더 높은 한도를 설정하려 해도 효과가 back_log 없습니다. 기본 숫자는 50입니다. 리눅스 시스템의 경우, 정수를 512보다 작게 설정하는 것이 권장됩니다.
max_connections = n
    MySQL 서버가 동시에 처리할 수 있는 최대 데이터베이스 연결 수(기본 설정은 100개)입니다. 한도를 초과하면 '너무 많은 연결' 오류가 보고됩니다
key_buffer_size = n
    인덱스 블록의 RMA 값(기본 설정은 8M), 더 나은 처리를 위한 인덱스 증가(모든 읽기 및 다중 쓰기 모두에 대해)
record_buffer:
    순차 스캔을 수행하는 각 스레드는 스캔하는 각 테이블에 이 크기의 버퍼를 할당합니다.
    순차적인 스캔을 많이 한다면 그 수치를 높이는 것이 좋습니다. 기본 값은 131072(128K)입니다.
wait_timeout:
    서버가 연결을 종료하기 전에 동작을 기다리는 초입니다.
interactive_timeout:
    서버가 인터랙티브 연결에서 동작을 기다리는 초도 수입니다.
    상호작용하는 고객은 mysql_real_connect()에 대해 CLIENT_INTERACTIVE 옵션을 사용하는 고객으로 정의됩니다.
    기본 값은 28800이고, 3600으로 변경할 수 있습니다.
건너뛰기-이름-해결            
    외부 연결에서 MySQL을 DNS 해석에서 비활성화하세요. 이 옵션을 사용하면 MySQL이 DNS를 해석하는 데 걸리는 시간을 줄여줍니다.
    하지만 이 옵션이 활성화되면 모든 원격 호스트 연결 승인은 반드시 IP 주소 방식을 사용해야 하며, 그렇지 않으면 MySQL이 정상적으로 연결 요청을 처리할 수 없습니다!
log-slow-queries = slow.log
    느린 쿼리를 기록하고 하나씩 최적화하세요
skip-innodb
스킵-BDB
    원하지 않는 테이블 타입은 닫고, 필요하면 이 기능을 추가하지 마세요
         
         
# > '%query_cache%'와 같은 변수를 보여줍니다;
# > 상태 표시 'QCACHE%';
Qcache_lowmem_prunes 값이 매우 크면 버퍼링이 부족하다는 뜻입니다;
Qcache_hits의 값이 매우 크면 쿼리 버퍼가 매우 자주 사용되고 있고, 값이 작지만 효율성에 영향을 준다면 쿼리 버퍼링을 사용하지 않는 것을 고려할 수 있습니다.
Qcache_free_blocks 값이 매우 크면 버퍼 내에 많은 이물질이 있다는 뜻입니다.


##########################################
###### max_allowed_packet      ######
##########################################
통신 패킷은 MySQL 서버로 전송되는 단일 SQL 문장 또는 클라이언트에 보내는 단일 라인입니다.
MySQL 5.1 서버와 클라이언트 간에 전송할 수 있는 최대 패킷은 1GB입니다.
MySQL 클라이언트나 mysqld 서버가 max_allowed_packet바이트보다 큰 패킷을 받으면 "패킷이 너무 크다"는 오류가 발생하고 연결이 종료됩니다. 일부 클라이언트의 경우, 통신 패킷이 너무 크면 쿼리 중에 "Loss of connection to MySQL server"라는 오류가 발생할 수 있습니다.
클라이언트와 서버 모두 각각 max_allowed_packet 변수를 가지고 있으므로, 큰 패킷을 처리할 계획이라면 클라이언트와 서버 모두에 해당 변수를 추가해야 합니다.
mysql 클라이언트 프로그램을 사용 중이라면, max_allowed_packet 변수는 기본값이 16MB입니다. 더 큰 값을 설정하려면 다음과 같이 mysql을 시작할 수 있습니다:
mysql> mySQL --max_allowed_packet=32M
정보 패키지 크기를 32MB로 설정합니다.
서버의 기본 max_allowed_packet 값은 1MB입니다. 서버가 큰 쿼리를 처리해야 한다면, 이 값을 늘릴 수 있습니다(예: 큰 블롭 컬럼을 처리할 준비를 할 때). 예를 들어, 16MB로 설정하려면 서버를 다음과 같이 시작할 수 있습니다:
mysql> mysqld --max_allowed_packet=16M

옵션 파일을 사용해 max_allowed_packet을 설정할 수도 있습니다. 서버용 변수를 16MB로 설정하려면 옵션 파일에 다운링크 콘텐츠를 추가하세요:
[mysqld]
max_allowed_packet=16M
추가 메모리는 필요할 때만 할당되기 때문에 이 변수의 값을 높이는 것이 안전합니다. 예를 들어, mysqld는 긴 쿼리를 발행하거나 mysqld가 큰 결과 라인을 반환해야 할 때만 더 많은 메모리를 할당합니다. 이 변수의 작은 기본값은 클라이언트와 서버 간 오류 패킷을 포착하고, 큰 패킷의 실수로 인한 메모리 오버플로우를 방지하기 위한 예방 조치입니다.
큰 블롭 값을 사용하고 있고, 쿼리를 처리할 만큼 충분한 메모리에 접근할 수 있도록 mysqld에 권한을 주지 않는다면, 큰 패킷과 관련된 이상한 문제들도 발생할 수 있습니다. 이런 점이 의심된다면, 스크립트에서 ulimit -d 256000을 늘리기 시작하고 mysqld mysqld_safe 재시작해 보세요.
##########################################
##### MySQL에서 데이터베이스 테이블을 열고 닫는 방법 #####
##########################################
table_cache, max_connections, max_tmp_tables 서버가 열어두는 최대 파일 수에 영향을 줍니다. 이 값들 중 하나 또는 둘 다 늘리면, 운영체제가 각 프로세스가 열어주는 파일 디스크립터 수에 대해 제한하는 한계에 부딪힐 수 있습니다. 하지만 많은 시스템에서 한도를 높일 수 있습니다. 운영 체제 문서에 문의해 보세요. 제한 변경 방법은 시스템마다 크게 다르니까요.
table_cache max_connections와 관련이 있습니다. 예를 들어, 200개의 열린 조인에 대해, 조인 내 최대 테이블 수인 n이 최소 200 * n의 테이블 버퍼를 가져야 합니다.
열린 테이블의 캐시는 최대 1 table_cache(기본값은 64개; 이것은 mysqld의 -O table_cache=#选项来改变)로 할 수 있습니다. 테이블은 캐시가 가득 차서 다른 스레드가 테이블을 열려고 시도하거나 mysqladmin refresh 또는 mysqladmin 플러시 테이블을 사용할 때만 닫히지 않습니다.
테이블 캐시가 가득 차면 서버는 다음과 같은 절차를 사용하여 사용할 캐시 항목을 찾습니다:
현재 사용하지 않는 표들은 가장 적게 사용되는 순서(LRU) 순서대로 공개됩니다.
캐시가 가득 차 있고 해제할 테이블이 없지만 새 테이블을 열어야 한다면, 캐시를 일시적으로 확장해야 합니다.
캐시가 임시 확장 상태에 있고 테이블이 활성화에서 비활성화로 변경되면 캐시가 닫히고 캐시에서 해제됩니다.
각 동시 접근 권한마다 테이블을 열어. 즉, 두 스레드가 같은 테이블에 접근하거나 같은 쿼리에서 두 번 테이블에 접근한다면(AS를 사용하면) 테이블을 두 번 열어야 합니다. 어떤 테이블의 첫 번째 열리는 것은 2개의 파일 디스크립터를 의미합니다; 테이블을 추가로 사용할 때마다 파일 디스크립터는 하나만 해당합니다. 첫 번째 열기에는 파일을 인덱싱하는 추가 디스크립터가 사용됩니다; 이 디스크립터는 모든 스레드에서 공유됩니다




이전의:리눅스 시스템에서 /etc/init.d 디렉터리와 /etc/rc.local 스크립트를 이해하세요
다음:MySQL 서비스가 리눅스 CentOS에서 시작되었는지 확인하는 방법
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com