I have a 바쁜 InnoDB 테이블과 대한 데이터베이스를 통해 단독으로 원하는거요 5GB 의 크기. 데비안 I& # 39, 디스크 및 데이터베이스 서버 실행됩니 SSD 를 사용할 수 있는 최대 연결 설정 및 마모 서버에서 많으면 ve = 800 가끔 중단됐다. 평균 per second) 를 2.5k. 대한 쿼리하지 그래서 데릭쉐퍼드와 최적화하려면 저장할 수 있는 공간을 확보하기 위해 메모리 사용 가능한 최대 연결.
Innodb_buffer_pool_size 제안을 할 수 있는 최대 80% # 39, ve seen i& 전체 메모리. 반면 난 afaq afnor 경고를 보낸 튜닝함으로써 기초 스크립트입니다.
Max Memory Ever Allocated : 91.97 G
Configured Max Per-thread Buffers : 72.02 G
Configured Max Global Buffers : 19.86 G
Configured Max Memory Limit : 91.88 G
Physical Memory : 94.58 G
여기 내 현재 innodb com/go/4e6b330a_kr:
| innodb_adaptive_flushing | ON |
| innodb_adaptive_hash_index | ON |
| innodb_additional_mem_pool_size | 20971520 |
| innodb_autoextend_increment | 8 |
| innodb_autoinc_lock_mode | 1 |
| innodb_buffer_pool_instances | 1 |
| innodb_buffer_pool_size | 20971520000 |
| innodb_change_buffering | all |
| innodb_checksums | ON |
| innodb_commit_concurrency | 0 |
| innodb_concurrency_tickets | 500 |
| innodb_data_file_path | ibdata1:10M:autoextend |
| innodb_data_home_dir | |
| innodb_doublewrite | ON |
| innodb_fast_shutdown | 1 |
| innodb_file_format | Antelope |
| innodb_file_format_check | ON |
| innodb_file_format_max | Antelope |
| innodb_file_per_table | ON |
| innodb_flush_log_at_trx_commit | 2 |
| innodb_flush_method | O_DIRECT |
| innodb_force_load_corrupted | OFF |
| innodb_force_recovery | 0 |
| innodb_io_capacity | 200 |
| innodb_large_prefix | OFF |
| innodb_lock_wait_timeout | 50 |
| innodb_locks_unsafe_for_binlog | OFF |
| innodb_log_buffer_size | 4194304 |
| innodb_log_file_size | 524288000 |
| innodb_log_files_in_group | 2 |
| innodb_log_group_home_dir | ./ |
| innodb_max_dirty_pages_pct | 75 |
| innodb_max_purge_lag | 0 |
| innodb_mirrored_log_groups | 1 |
| innodb_old_blocks_pct | 37 |
| innodb_old_blocks_time | 0 |
| innodb_open_files | 300 |
| innodb_purge_batch_size | 20 |
| innodb_purge_threads | 0 |
| innodb_random_read_ahead | OFF |
| innodb_read_ahead_threshold | 56 |
| innodb_read_io_threads | 4 |
| innodb_replication_delay | 0 |
| innodb_rollback_on_timeout | OFF |
| innodb_rollback_segments | 128 |
| innodb_spin_wait_delay | 6 |
| innodb_stats_method | nulls_equal |
| innodb_stats_on_metadata | ON |
| innodb_stats_sample_pages | 8 |
| innodb_strict_mode | OFF |
| innodb_support_xa | ON |
| innodb_sync_spin_loops | 30 |
| innodb_table_locks | ON |
| innodb_thread_concurrency | 4 |
| innodb_thread_sleep_delay | 10000 |
| innodb_use_native_aio | ON |
| innodb_use_sys_malloc | ON |
| innodb_version | 1.1.8 |
| innodb_write_io_threads | 4 |
사이드 참고 있을 수 있는 관련. 내가 많은 것을 볼 때 내가 삽입하려면 시도하시겠습니까 게시물로의 (말하도다 10KB 통해) 를 드루팔 (설치되어 있는 별도의 웹 서버) 가 영원하기를 및 데이터베이스, 이 페이지를 제대로 반환하지 않습니다.
네 [ innodb_buffer_pool_size ] [1] 엄청납니다. '20 971 520 000' 할꺼이나 설정할 수 있습니다. # 39 의 that& 19.5135 입니다. Innodb 5GB 의 데이터 및 indexe 관심용 있을 경우에만 8gb/s 대한 합니다. 심지어 너무 높다고 할 수 있습니다.
다음은 첫 쿼리하지 실행하십시오 너희는너희가 어떻게해야합니다.
SELECT CEILING(Total_InnoDB_Bytes*1.6/POWER(1024,3)) RIBPS FROM
(SELECT SUM(data_length+index_length) Total_InnoDB_Bytes
FROM information_schema.tables WHERE engine='InnoDB') A;
이 모든 데이터를 기반으로 크기를 부여하느뇨 리바프스 권장됨 InnoDB 버퍼 풀 수 있습니다, InnoDB 및 indexe 추가함으로써 60% 였다.
예를 들어
mysql> SELECT CEILING(Total_InnoDB_Bytes*1.6/POWER(1024,3)) RIBPS FROM
-> (SELECT SUM(data_length+index_length) Total_InnoDB_Bytes
-> FROM information_schema.tables WHERE engine='InnoDB') A;
+-------+
| RIBPS |
+-------+
| 8 |
+-------+
1 row in set (4.31 sec)
mysql>
다음 중 설정되었습니다 /etc/my.cnf 대체하십시오 출력입니다 됩니다
[mysqld]
innodb_buffer_pool_size=8G
다음으로, mysql 재시작하여 '서비스'
Mysql 의 실행하십시오 1 ~ 2 주 후에 다시 시작. 그런 다음 쿼리하지 실행하십시오.
SELECT (PagesData*PageSize)/POWER(1024,3) DataGB FROM
(SELECT variable_value PagesData
FROM information_schema.global_status
WHERE variable_name='Innodb_buffer_pool_pages_data') A,
(SELECT variable_value PageSize
FROM information_schema.global_status
WHERE variable_name='Innodb_page_size') B;
이렇게 하면 실제 GB 의 메모리를 시용되는 제공하십시오 InnoDB 의해 사용 중입니다. Innodb 의 데이터를 버퍼 풀 이 시점에.
나는 우리 섹스한거요 기록되었으므로 이전: # 19181 https://dba.stackexchange.com/questions/19164/what-to-set-innodb-buffer-pool-and-why/19181
'지금' 이 아닌, 재구성할 수 도망쳐야해 다택브 쿼리하지 재시작하기 및 기다림커서 일주일만요
이 값은 매우 큰 InnoDB 버퍼 보다 가깝게 할 수 있다 '+' 다택브 어떻게 풀 (백분율 지정되어 innodb_change_buffer_max_size). 나는 지금 이 예약한 20000M 비해 훨씬 적은 정말 이 됩니다. 이 같은 다른 튜닝함으로써 절감입니까 RAM 에 사용될 수 있습니다.
이것은 매우 중요한 참고: 추가로 필요할 때에 비해 10%, InnoDB 의 값은 [ innodb_buffer_pool_size ] [7]. 다음은 무너지잖아! [MySQL 문서용으로] [8] 이 밝혔습니다.
>. 이 값을 설정한 가장 큰 적은 디스크 I / O 요구되는가 액세스하려면 >. data-in 표. 이 최대 데이터베이스 서버 전용 를 설정할 수 있습니다 >. 80% 로 시스템의 물리적 메모리 크기. 뒤로를 배율입니다 준비를 해야 합니다 >. 이 경우 이 값은 다른 문제가 발생합니다. >. >. 경쟁을 유발할 수 있는 물리적 메모리 페이징의 운영 >. 시스템. >. >. InnoDB 스케줄합니다 위한 추가 메모리 버퍼 및 제어 구조, >. 전체 약 10 퍼센트 더 클 수 있도록 공간이 할당할지 >. 지정된 size. >. >. Windows 에서 문제가 될 수 있는 주소 공간이 연속되어야 합니다 >. 시스템 dll 로드 함께 있는 특정 충족합니다. >. >. 이 시간에 비례하여 은 대략 초기화하려면 버퍼 풀 >. 크기. 큰 설치, 이 초기화하지 시간이 될 수 있습니다. >. 크다. 예를 들어 있는 현대 리눅스 서버, x86_64 >. 10gb 초기화하지 버퍼 풀 6 초 정도 소요됩니다. >. 부분 참조 8.9.1 "The InnoDB 버퍼 풀".
난 다음 값을 볼 수 있는 'my. cnf'
| innodb_io_capacity | 200 |
| innodb_read_io_threads | 4 |
| innodb_thread_concurrency | 4 |
| innodb_write_io_threads | 4 |
이 수를 액세스하면 InnoDB 의 영향을 미치는 여러 개의 코어
제발 설정되었습니다 다음과 같습니다.
[mysqld]
innodb_io_capacity = 2000
innodb_read_io_threads = 64
innodb_thread_concurrency = 0
innodb_write_io_threads = 64
나는 전에 우리 섹스한거요 기록되었으므로 DBA 의 스타케스창레
26일 5월 2011년 '-'. # 2948 https://dba.stackexchange.com/questions/2918/about-single-threaded-versus-multithreaded-databases-performance/2948 12일 9월 2011년 '-'. # 5670 https://dba.stackexchange.com/questions/5666/possible-to-make-mysql-use-more-then-one-core/5670 20일 9월 2011년 '-'. # 5968 https://dba.stackexchange.com/questions/5926/multi-cores-and-mysql-performance/5968
그냥 답변됨 더 간단한 공식을 사용하여 이와 같은 질문을 세르베르포트 :
SELECT CONCAT(CEILING(RIBPS/POWER(1024,pw)),SUBSTR(' KMGT',pw+1,1))
Recommended_InnoDB_Buffer_Pool_Size FROM
(
SELECT RIBPS,FLOOR(LOG(RIBPS)/LOG(1024)) pw
FROM
(
SELECT SUM(data_length+index_length)*1.1*growth RIBPS
FROM information_schema.tables AAA,
(SELECT 1.25 growth) BBB
WHERE ENGINE='InnoDB'
) AA
) A;
[1]: http://dev.mysql.com/doc/refman/5.5/en/innodb-parameters.html # sysvar_innodb_buffer_pool_size [2]: http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html # sysvar_join_buffer_size [3]: http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html # sysvar_sort_buffer_size [4]: http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html # sysvar_read_buffer_size [5]: http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html # sysvar_read_rnd_buffer_size [6]: http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html # sysvar_max_connections [7]: http://dev.mysql.com/doc/refman/5.5/en/innodb-parameters.html # sysvar_innodb_buffer_pool_size [8]: http://dev.mysql.com/doc/refman/5.5/en/innodb-parameters.html # sysvar_innodb_buffer_pool_size
이 같은 일이? &Lt 사용하여 표시, code> VARIABLES< /code>;; 글로벌 STATUS< /code> 표시 및 < code>;;;:
< i> Expression:< /i>;;; ,,, br> < /code> _ram< < code> innodb_buffer_pool_size / < i> Meaning:< /i>;;; % RAM 데사용됩니다 InnoDB buffer_pool< br>; < i> 권장됨 range:< /i>;;; 60 ~ 80% < br>; < br>; < i> Expression:< /i>;;; ,,, br> < /code> Innodb_buffer_pool_read_requests< < code> Innodb_buffer_pool_reads / < i> Meaning:< /i>;;; 읽기 요청을 해왔던 br> 친 disk<; < i> 권장됨 range:< /i>;;; 0-2% < br>; 어떻게 해야 할 경우, /i> range:< 아웃해야 i> <;; Innodb_buffer_pool_size 증가되지는 충분한지 RAM.< br>; < br>; < i> Expression:< /i>;;; ,,, br> < /code> Innodb_buffer_pool_read_requests< < code> Innodb_pages_read / < i> Meaning:< /i>;;; 읽기 요청을 해왔던 br> 친 disk<; < i> 권장됨 range:< /i>;;; 0-2% < br>; 어떻게 해야 할 경우, /i> range:< 아웃해야 i> <;; Innodb_buffer_pool_size 증가되지는 충분한지 RAM.< br>; < br>; < i> Expression:< /i>;;; ,,, br> < /code> Innodb_buffer_pool_write_requests< < code> Innodb_pages_written / < i> Meaning:< /i>;;; 쓰기 요청을 해왔던 친 디스크입니다 < br>; < i> 권장됨 range:< /i>;;; 0-15% < br>; 어떻게 해야 할 경우, /i> range:< 아웃해야 i> <;; 확인란 innodb_buffer_pool_size< br>; < br>; < i> Expression:< /i>;;; ,,, br> < /code> Uptime< < code> Innodb_buffer_pool_reads / < i> Meaning:< /i>;;; Reads< br>; < i> 권장됨 range:< /i>;;; 0-100/sec.< br>; 어떻게 해야 할 경우, /i> range:< 아웃해야 i> <;; Innodb_buffer_pool_size 증가되지는 < br>?;; < br>; < i> Expression:< /i>;;; code> <;;; (Innodb_buffer_pool_reads + Innodb_buffer_pool_pages_flushed) / Uptime< /code> < br>; < i> Meaning:< /i>;;; InnoDB I/O< br>; < i> 권장됨 range:< /i>;;; 0-100/sec.< br>; 어떻게 해야 할 경우, /i> range:< 아웃해야 i> <;; Innodb_buffer_pool_size 증가되지는 < br>?;; < br>; < i> Expression:< /i>;;; ,,, br> < /code> Uptime< < code> Innodb_buffer_pool_pages_flushed / < i> Meaning:< /i>;;; 쓰기 (플러시합니다) < br>; < i> 권장됨 range:< /i>;;; 0-100/sec.< br>; 어떻게 해야 할 경우, /i> range:< 아웃해야 i> <;; Innodb_buffer_pool_size 증가되지는 < br>?;; < br>; < i> Expression:< /i>;;; ,,, br> < /code> Uptime< < code> Innodb_buffer_pool_wait_free / < i> Meaning:< /i>;;; 엇회전식 없을 때 buffer_pool 위한 무료 쪽. 즉, 모든 페이지는 dirty.< br>; < i> 권장됨 range:< /i>;;; 0-1/sec.< br>; 어떻게 해야 할 경우, /i> range:< 아웃해야 i> <;; Innodb_buffer_pool_size 설정되었습니다 먼저 확인해야 합니다. 문제가 있을 경우, 비용 innodb_max_dirty_pages_pct< br>; < br>;
하지만 난 제목에 대해 문의할 innodb_buffer_pool_size 큰 문제는 없는 것으로 보고 있다. (왜 롤란도 대해 아무런 언급도 하지 않고, 심지어 설정한 볼 만큼 it too big.)
>. # 39, ve = 800 세트 있습니다 최대 연결 및 마모 i& 많으면 서버가 중단됐다.
즉 확실하지 않다. 800 사용자를 Sleep" "; 사실상 제로 모드에는 시스템에 대한 영향. 800 활성화됨 스래드입니다 약간만이라도 재해. 가부키쇼 스래드입니다 " running" 있다,?
서로 오른길로 스래드입니다 차단? 교착 상태 등 일부 단서를 볼 수 있는 엔진 (innodb 상태 표시.
쿼리합니다 up in the 슬로로그 알 수 있습니까? # 39 의 저들이요 최적화합니다 let&
어떤 버전을 사용하고 있습니까? 더 좋은 직장을 스트라다브 (a 드롭인 교체를 위해 InnoDB) 가 사용하는 다중 코어. 5.6.7 에서는 더욱 죠브
이 변경하십시오 innodb_buffer_pool_instances - 8 (있다고 가정할 때 20G buffer_pool); 또 뒤로 살짝 잘라냅니다 뮤텍스에 경합.
I / O 바인딩되었거나 제환자의 제환자의 cpucomment 바인딩될? 이 솔루션은 따라 완전히 다른 대답을.
만약 모든 로그 파일 드라이브 (ssd) - 더 좋을 수도 있는 것으로 비사양 ssd.
하지만 내 경험상 대부분의 시간을 항상 더 많은 메모리를 버퍼 풀 크기를 더 잘 안 맞는 데이터 크기. 거짓말 같은 시간, 백업 테이블 주위에 많은 테이블은 비활성으로 대부분의 버퍼 풀 크기를 적합한 액티브 데이터 크기 때문에, innodb 대답하도다 합니다.
또한 타임 프레임 지정한 페이지를 활성일 there& # 39 점, 어디 최적의 성능을 영향을 있지만, s, t get won& # 39 의 성능을 보다 더 큰 버퍼 크기. 측정할 수 있는 상태 '에서' show engine innodb 추정치입니다 / 통계 /