23.8 MySQL C API
- 23.8.1 MySQL C API의 구현
- 23.8.2 MySQL 서버와 MySQL Connector / C의 동시 설치
- 23.8.3 C API 클라이언트 프로그램의 예
- 23.8.4 C API 클라이언트 프로그램 빌드 및 실행
- 23.8.5 C API 데이터 구조
- 23.8.6 C API 함수 개요
- 23.8.7 C API 함수 설명
- 23.8.8 C API 준비된 문
- 23.8.9 C API 준비된 문 데이터 구조
- 23.8.10 C API 준비된 문 함수 개요
- 23.8.11 C API 준비된 문 함수의 설명
- 23.8.12 C API 스레드 함수의 설명
- 23.8.13 C API 임베디드 서버 기능 설명
- 23.8.14 C API 클라이언트 플러그인 함수
- 23.8.15 C API를 사용하는 경우 일반적인 질문과 문제
- 23.8.16 자동 재 연결 동작 제어
- 23.8.17 여러 문 실행의 C API 지원
- 23.8.18 C API 준비된 문 문제
- 23.8.19 C API 준비된 문 일시 치 처리
- 23.8.20 C API의 준비된 CALL 문 지원
C API는 MySQL 클라이언트 / 서버 프로토콜에 대한 저수준 액세스를 제공하는 C 프로그램이 데이터베이스의 내용에 액세스 할 수 있도록합니다. C API 코드는 MySQL과 함께 배포되며 libmysqlclient
라이브러리에 구현되어 있습니다. 섹션 23.8.1 "MySQL C API의 구현" 을 참조하십시오.
대부분의 다른 클라이언트 API는 libmysqlclient
라이브러리를 사용하여 MySQL 서버와 통신합니다. (예외는 Connector / J와 Connector / Net입니다.) 이것은 예를 들어, 다른 클라이언트 프로그램에서 사용되는 많은 같은 환경 변수를 사용할 수 있음을 의미합니다. 그들은 라이브러리에서 참조되어 있기 때문입니다. 이러한 환경 변수의 목록은 섹션 4.1 "MySQL 프로그램 개요" 를 참조하십시오.
C API를 사용하여 클라이언트 프로그램을 구축하는 절차는 섹션 23.8.4.1 "C API 클라이언트 프로그램의 구축" 을 참조하십시오. 스레드에 의한 프로그래밍 내용은 섹션 23.8.4.2 "C API 스레드 클라이언트 프로그램 만들기" 를 참조하십시오. "서버"와 "클라이언트"같은 프로그램에 포함 (및 외부 MySQL 서버와 통신하지 않는) 독립 실행 형 응용 프로그램을 작성하려면 섹션 23.7 "임베디드 MySQL 서버 라이브러리 libmysqld" 를 참조하십시오.
업그레이드 후 컴파일 된 클라이언트 프로그램에 「
또는 예기치 않은 코어 덤프 등의 문제가 발생하면 프로그램이 이전 헤더 파일이나 라이브러리 파일을 사용하여 컴파일 된 수 있습니다. 이 경우 컴파일에 사용 된 Commands out of sync
」mysql.h
파일 및 libmysqlclient.a
라이브러리의 날짜를 확인하고 그들이 새로운 MySQL 배포판에서 것임을 확인합니다. 그렇지 않은 경우에는 프로그램을 새로운 헤더 및 라이브러리에서 다시 컴파일합니다. 라이브러리의 주 버전 번호가 변경된 ( libmysqlclient.so.17
에서 libmysqlclient.so.18
등) 경우 공유 클라이언트 라이브러리에 컴파일 된 프로그램으로 재 컴파일이 필요할 수 있습니다. 추가 호환성 정보는 섹션 23.8.4.3 "C API 클라이언트 프로그램 실행" 을 참조하십시오.
클라이언트는 최대의 통신 버퍼 크기를 갖습니다. 처음에 할당 된 버퍼의 크기 (16K 바이트)의 최대 크기 (기본적으로 16M 바이트)까지 자동으로 증가됩니다. 버퍼 크기는 필요한 경우에만 증가하기 때문에 최대 제한을 단순히 늘려도 그 자체로 사용되는 자원이 늘어나는 것은 아닙니다. 이 크기 검사는 주로 잘못된 정책과 통신 패킷에 대한 예방 조치입니다.
통신 버퍼는 단일 SQL 문 (클라이언트에서 서버로의 트래픽)과 행 반환되는 데이터 (서버에서 클라이언트로의 트래픽)을 저장하는 데 충분한 크기가 있어야합니다. 각 세션의 통신 버퍼는 쿼리 또는 행을 처리하기 위해 최대 한계까지 동적으로 확대됩니다. 예를 들어, 16M 바이트까지의 데이터를 저장하는 BLOB
값이있는 경우, 적어도 16M 바이트 통신 버퍼 제한이 필요합니다 (서버와 클라이언트 모두에서). 클라이언트 라이브러리에 포함 된 기본 최대는 1G 바이트이지만 서버에서 기본 최대 값은 1M 바이트입니다. 이를 늘리려면 서버를 시작할 때 max_allowed_packet
매개 변수의 값을 변경합니다. 섹션 8.11.2 "서버 파라미터의 튜닝」 을 참조하십시오.
MySQL 서버는 각 쿼리 후 각 통신 버퍼를 net_buffer_length
바이트로 축소합니다. 클라이언트는 연결과 관련된 버퍼의 크기는 연결이 종료 될 때까지 감소되지 않습니다. 그 시점에서 클라이언트의 메모리가 재사용됩니다.