Saya memiliki database sibuk dengan tabel InnoDB semata-mata yang berukuran sekitar 5GB. Basis data berjalan pada server Debian menggunakan disk SSD dan saya telah mengatur koneksi maks = 800 yang kadang-kadang menjenuhkan dan menggiling server untuk berhenti. Permintaan rata-rata per detik adalah sekitar 2,5 ribu. Jadi saya perlu mengoptimalkan penggunaan memori untuk memberikan ruang bagi koneksi maksimum yang mungkin.
Saya telah melihat saran bahwa innodb_buffer_pool_size seharusnya hingga% 80 dari total memori. Di sisi lain saya mendapatkan peringatan ini dari skrip tuning-primer:
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
Berikut adalah variabel innodb saya saat ini:
| 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 |
Catatan tambahan yang mungkin relevan: Saya melihat bahwa ketika saya mencoba memasukkan posting besar (katakanlah lebih dari 10KB) dari Drupal (yang duduk di server web terpisah) ke basis data, ia akan bertahan selamanya dan halaman tidak kembali dengan benar.
Mengenai ini, saya bertanya-tanya apa yang seharusnya menjadi innodb_buffer_pool_size saya untuk kinerja yang optimal. Saya menghargai saran Anda untuk mengatur ini dan parameter lain secara optimal untuk skenario ini.
SELECT (PagesData*PageSize)/POWER(1024,3) DataGB FROM...
menghasilkan kesalahan berikut pada MySQL 5.7: " Fitur 'INFORMATION_SCHEMA.GLOBAL_STATUS' dinonaktifkan; lihat dokumentasi untuk 'show_compatibility_56' ". Apakah Anda memiliki versi yang diperbarui?