Hai Saya menjalankan versi terbaru dari Percona Server.
Versi server: 5.5.24-55 Percona Server (GPL), Rilis 26.0
Saya memiliki kotak 10 cpu dengan karakteristik ini.
processor : 0
vendor_id : AuthenticAMD
cpu family : 16
model : 9
model name : AMD Opteron(tm) Processor 6128
stepping : 1
microcode : 0x10000d9
cpu MHz : 800.000
cache size : 512 KB
Ini memiliki SSD dan 64GB RAM. Innodb kira-kira 10GB, jadi innodb_buffer_pool_size diatur ke 10GB.
Saya punya tabel yaitu sebagai berikut:
create table TODAY
( symbol_id integer not null
, openp decimal(10,4)
, high decimal(10,4)
, low decimal(10,4)
, last decimal(10,4) not null
, volume int
, last_updated datetime -- the time of the last quote update
, prev decimal(10,4) null
, PRIMARY KEY ( symbol_id )
)
Jika saya mulai dengan tabel kosong dan memasukkan 23.000 baris, dibutuhkan sekitar 10 detik. Jika saya kemudian melakukan pembaruan di mana setiap kolom setiap baris diperbarui (kecuali tentu saja symbol_id) dibutuhkan sedikit lebih seperti 11-12 detik.
Apakah ini secara umum kinerja penulisan yang saya harapkan dari Innodb? Apakah ada saran untuk meningkatkan kinerja ini? memperbarui 23.000 baris adalah kasus yang ekstrem, karena biasanya selama hari perdagangan saya perlu memperbarui sekitar 1000 baris setiap 5 detik (jadi, itu adalah kendala yang lebih realistis yang saya hadapi).
Pengaturan mysql.cnf lain yang relevan yang telah saya ubah:
innodb_buffer_pool_size = 10G
innodb_log_file_size = 64M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
BTW jika alih-alih Innodb saya membuat tabel dengan ENGINE = MEMORY dibutuhkan sekitar 4 detik untuk melakukan memasukkan, 6 detik untuk melakukan pembaruan.
Banyak TIA jika seseorang dapat membantu saya mencari tahu apa tolok ukur untuk jenis permintaan ini, atau membantu saya meningkatkan waktu.
Mengenakan
Pengaturan Innodb penuh PS.
mysql> menunjukkan variabel global seperti 'innodb%'; + ------------------------------------------- + ----- ------------------- + | Variable_name | Nilai | + ------------------------------------------- + ----- ------------------- + | innodb_adaptive_flushing | ON | | innodb_adaptive_flushing_method | perkiraan | | innodb_adaptive_hash_index | ON | | innodb_adaptive_hash_index_partitions | 1 | | innodb_additional_mem_pool_size | 8388608 | | innodb_autoextend_increment | 8 | | innodb_autoinc_lock_mode | 1 | | innodb_blocking_buffer_pool_restore | OFF | | innodb_buffer_pool_inances | 1 | | innodb_buffer_pool_restore_at_startup | 0 | | innodb_buffer_pool_shm_checksum | ON | | innodb_buffer_pool_shm_key | 0 | | innodb_buffer_pool_size | 10737418240 | | innodb_change_buffering | semua | | innodb_checkpoint_age_target | 0 | | innodb_checksums | ON | | innodb_commit_concurrency | 0 | | innodb_concurrency_tickets | 500 | | innodb_corrupt_table_action | menegaskan | | innodb_data_file_path | ibdata1: 10M: autoextend | | innodb_data_home_dir | | | innodb_dict_size_limit | 0 | | innodb_doublewrite | ON | | innodb_doublewrite_file | | | innodb_fake_changes | OFF | | innodb_fast_checksum | OFF | | innodb_fast_shutdown | 1 | | innodb_file_format | Antelope | | innodb_file_format_check | ON | | innodb_file_format_max | Antelope | | innodb_file_per_table | OFF | | innodb_flush_log_at_trx_commit | 2 | | innodb_flush_method | O_DIRECT | | innodb_flush_neighbor_pages | area | | innodb_force_load_corrupted | OFF | | innodb_force_recovery | 0 | | innodb_ibuf_accel_rate | 100 | | innodb_ibuf_active_contract | 1 | | innodb_ibuf_max_size | 5368692736 | | innodb_import_table_from_xtrabackup | 0 | | innodb_io_capacity | 200 | | innodb_kill_idle_transaction | 0 | | innodb_large_prefix | OFF | | innodb_lazy_drop_table | 0 | | innodb_lock_wait_timeout | 50 | | innodb_locks_unsafe_for_binlog | OFF | | innodb_log_block_size | 512 | | innodb_log_buffer_size | 8388608 | | innodb_log_file_size | 67108864 | | 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_page_size | 16384 | | innodb_purge_batch_size | 20 | | innodb_purge_threads | 1 | | innodb_random_read_ahead | OFF | | innodb_read_ahead | linier | | innodb_read_ahead_threshold | 56 | | innodb_read_io_threads | 4 | | innodb_recovery_stats | OFF | | innodb_recovery_update_relay_log | OFF | | innodb_replication_delay | 0 | | innodb_rollback_on_timeout | OFF | | innodb_rollback_segments | 128 | | innodb_show_locks_held | 10 | | innodb_show_verbose_locks | 0 | | innodb_spin_wait_delay | 6 | | innodb_stats_auto_update | 1 | | innodb_stats_method | nulls_equal | | innodb_stats_on_metadata | ON | | innodb_stats_sample_pages | 8 | | innodb_stats_update_need_lock | 1 | | innodb_strict_mode | OFF | | innodb_support_xa | ON | | innodb_sync_spin_loops | 30 | | innodb_table_locks | ON | | innodb_thread_concurrency | 0 | | innodb_thread_concurrency_timer_based | OFF | | innodb_thread_sleep_delay | 10000 | | innodb_use_global_flush_log_at_trx_commit | ON | | innodb_use_native_aio | ON | | innodb_use_sys_malloc | ON | | innodb_use_sys_stats_table | OFF | | innodb_version | 1.1.8-rel26.0 | | innodb_write_io_threads | 4 | + ------------------------------------------- + ----- ------------------- + 90 baris diset (0,00 dtk)
Saya menjalankan numactl --hardware dan ini adalah output yang saya dapatkan. Komentar dari admin saya tercantum di bawah ini (untuk interpretasi).
root @ prog: / data / mysql # numactl --hardware tersedia: 4 node (0-3) simpul 0 cpus: 0 1 2 3 simpul 0 ukuran: 32766 MB simpul 0 gratis: 21480 MB simpul 1 cpus: 4 5 6 7 simpul 1 ukuran: 32768 MB simpul 1 gratis: 25285 MB simpul 2 cpus: 12 13 14 15 simpul 2 ukuran: 32768 MB simpul 2 gratis: 20376 MB simpul 3 cpus: 8 9 10 11 simpul 3 ukuran: 32768 MB simpul 3 gratis: 24898 MB jarak simpul: simpul 0 1 2 3 0: 10 16 16 16 1: 16 10 16 16 2: 16 16 10 16 3: 16 16 16 10