InnoDB 테이블, 인덱스, 기타 보조 버퍼에 대한 캐시 데이터는 버퍼 풀의 메모리 영역에 저장됩니다. 버퍼 풀의 크기는 시스템 성능에 중요합니다. 더 큰 버퍼 풀은 동일한 테이블 데이터에 대한 다중 액세스에 대한 디스크 I/O를 줄일 수 있습니다. 전용 데이터베이스 서버에서는 버퍼 풀 크기를 컴퓨터 물리 메모리 크기의 80%로 설정하는 것이 가능합니다
1) 시스템 변수 매개변수
Innodb_page_size
Innodb_page_size
InnoDB页面大小(默认为16KB)。页面中包含许多值,页面大小使它们可以轻松转换为字节。
Innodb_buffer_pool_chunk_size
innodb_buffer_pool_chunk_size 定义InnoDB缓冲池大小调整操作的块大小。默认128M。最大值可设置innodb_buffer_pool_size / innodb_buffer_pool_instances
innodb_buffer_pool_instances
InnoDB 缓冲池划分为的区域数。
Innodb_buffer_pool_pages_data
数页在 InnoDB 缓冲池中包含的数据。该数字包括 脏页和干净页。使用压缩表时,报告的 Innodb_buffer_pool_pages_data 值可能大于 Innodb_buffer_pool_pages_total (错误#59550)。
Innodb_buffer_pool_pages_total
InnoDB 缓冲池 的总大小(以页为单位)。使用压缩表时,报告的 Innodb_buffer_pool_pages_data 值可能大于 Innodb_buffer_pool_pages_total (错误#59550)
2)运行状态变量
Innodb_buffer_pool_pages_flushed
从缓冲池刷新页面的请求数 。
Innodb_buffer_pool_read_requests
表示从内存中读取逻辑的请求数。
Innodb_buffer_pool_reads
InnoDB 不能从缓冲池满足的逻辑读取的数量,必须直接从磁盘读取。
Innodb_buffer_pool_wait_free
Innodb_buffer_pool_chunk_size
innodb_buffer_pool_chunk_size는 InnoDB 버퍼 풀 크기 조정 작업에 대한 청크 크기를 정의합니다. 기본값은 128M입니다. 최대값은 innodb_buffer_pool_size / innodb_buffer_pool_instances
innodb_buffer_pool_instances
Innodb_buffer_pool_pages_data
InnoDB 버퍼 풀에 포함된 데이터 페이지 수입니다. 이 숫자에는 더럽고 깨끗한 페이지가 포함됩니다. 압축된 테이블을 사용할 때 보고된 Innodb_buffer_pool_pages_data 값은 Innodb_buffer_pool_pages_total(버그 #59550)보다 클 수 있습니다. Innodb_buffer_pool_pages_total
Innodb_buffer_pool_pages_flushed
페이지 새로고침 버퍼 풀 요청 수입니다. 🎜🎜🎜🎜
Innodb_buffer_pool_read_requests
🎜🎜🎜🎜는 메모리에서 로직을 읽기 위한 요청 수를 나타냅니다. 🎜🎜🎜🎜Innodb_buffer_pool_reads
🎜🎜🎜🎜InnoDB가 버퍼 풀에서 충족할 수 없고 디스크에서 직접 읽어야 하는 논리적 읽기 수입니다. 🎜🎜🎜🎜Innodb_buffer_pool_wait_free
🎜🎜🎜🎜일반적으로 InnoDB 버퍼 풀에 대한 쓰기는 백그라운드에서 발생합니다. InnoDB가 페이지를 읽거나 생성해야 하고 클린 페이지를 사용할 수 없는 경우 InnoDB는 먼저 일부 더티 페이지를 플러시하고 작업이 완료될 때까지 기다립니다. 이 카운터는 대기 중인 인스턴스를 계산합니다. 올바르게 설정된 경우 innodb_buffer_pool_size는 더 작은 값이어야 합니다. 🎜🎜🎜🎜버퍼풀 관련 매개변수를 합리적으로 설정🎜🎜🎜1. innodb_buffer_pool_size는 기본적으로 시스템 메모리의 80%로 설정되며, 이후 실제 상황에 맞게 다음 규칙에 따라 조정됩니다🎜🎜mysql> show global status like 'Innodb_buffer_pool_pages_data'; +-------------------------------+---------+ | Variable_name | Value | +-------------------------------+---------+ | Innodb_buffer_pool_pages_data | 1894874 | +-------------------------------+---------+ 1 row in set (0.00 sec) mysql> show global status like 'Innodb_buffer_pool_pages_total'; +--------------------------------+---------+ | Variable_name | Value | +--------------------------------+---------+ | Innodb_buffer_pool_pages_total | 1965960 | +--------------------------------+---------+ 1 row in set (0.00 sec) # 计算是否应该添加内存 使用率 = Innodb_buffer_pool_pages_data/Innodb_buffer_pool_pages_total*100% 当结果 > 95% 则增加 innodb_buffer_pool_size 当结果 < 95% 则减少 innodb_buffer_pool_size, 可适当较少,当然独享业务机器多了也没啥问题
# cat /etc/my.cnf [mysqld] ...... innodb_buffer_pool_size = 系统内存%80 innodb_buffer_pool_instances = 大于8的情况下,每个缓冲池实例至少1GB ......
对于繁忙的服务器, buffer pool 将划分为多个实例以提高系统并发性, 减少线程间读写缓存的争用。buffer pool 的大小首先受 innodb_buffer_pool_instances 影响, 当然影响较小。
1.Innodb_buffer_pool_pages_data: Innodb buffer pool缓存池中包含数据的页的数目,包括脏页。单位是page。
show global status like 'Innodb_buffer_pool_pages_data';
2.Innodb_buffer_pool_pages_total: innodb buffer pool的页总数目。单位是page。
show global status like 'Innodb_buffer_pool_pages_total';
3.show global status like 'Innodb_page_size'; 查看@@innodb_buffer_pool_size大小,单位字节
SELECT @@innodb_buffer_pool_size/1024/1024/1024; #字节转为G
4.在线调整InnoDB缓冲池大小,如果不设置,默认为128M
set global innodb_buffer_pool_size = 4227858432; ##单位字节
计算Innodb_buffer_pool_pages_data/Innodb_buffer_pool_pages_total*100%
当结果 > 95% 则增加 innodb_buffer_pool_size, 建议使用物理内存的 75%
当结果 < 95% 则减少 innodb_buffer_pool_size, 建议设置大小为: Innodb_buffer_pool_pages_data * Innodb_page_size * 1.05 / (1024*1024*1024)
위 내용은 MySQL에서 Innodb_buffer_pool_size를 설정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!