Merhaba Percona Server'ın en son sürümünü çalıştırıyorum.
Sunucu sürümü: 5.5.24-55 Percona Server (GPL), Sürüm 26.0
Bu özelliklere sahip 10 işlemci kutum var.
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
SSD ve 64GB RAM'e sahiptir. Innodb yaklaşık 10GB olduğundan, innodb_buffer_pool_size 10GB olarak ayarlanmıştır.
Aşağıdaki gibi bir tablo var:
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 )
)
Boş bir tabloyla başlayıp 23.000 satırlık bir ekleme yaparsam yaklaşık 10 saniye sürer. Daha sonra her satırın her sütununun güncellendiği bir güncelleme yaparsam (tabii ki symbol_id hariç) 11-12 saniye gibi biraz daha zaman alır.
Bu genel olarak Innodb'dan beklemem gereken yazma performansı mı? Bu performansı artırmak için herhangi bir öneriniz var mı? 23.000 satırı güncellemek aşırı bir durumdur, tipik olarak bir işlem günü boyunca her 5 saniyede yaklaşık 1000 satırı güncellemem gerekir (yani, ele aldığım daha gerçekçi kısıtlama).
Değiştirdiğim diğer ilgili mysql.cnf ayarları:
innodb_buffer_pool_size = 10G
innodb_log_file_size = 64M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
BTW Innodb yerine tabloyu ENGINE = MEMORY ile oluşturuyorum. Eklemenin yapılması yaklaşık 4 saniye, güncellemenin yapılması 6 saniye sürüyor.
Birisi bu tür bir sorgu için karşılaştırmanın ne olduğunu anlamama yardımcı olabilirse veya zamanı iyileştirmeme yardımcı olursa, birçok TIA.
Don
PS tam Innodb ayarları.
mysql> 'innodb%' gibi global değişkenleri gösterir; + ------------------------------------------- + ----- ------------------- + | Değişken_adı | Değer | + ------------------------------------------- + ----- ------------------- + | innodb_adaptive_flushing | AÇIK | | innodb_adaptive_flushing_method | tahmin | | innodb_adaptive_hash_index | AÇIK | | 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 | KAPALI | | innodb_buffer_pool_instances | 1 | | innodb_buffer_pool_restore_at_startup | 0 | | innodb_buffer_pool_shm_checksum | AÇIK | | innodb_buffer_pool_shm_key | 0 | | innodb_buffer_pool_size | 10737418240 | | innodb_change_buffering | hepsi | | innodb_checkpoint_age_target | 0 | | innodb_checksums | AÇIK | | innodb_commit_concurrency | 0 | | innodb_concurrency_tickets | 500 | | innodb_corrupt_table_action | iddia etmek | | innodb_data_file_path | ibdata1: 10M: otomatik uzatma | | innodb_data_home_dir | | | innodb_dict_size_limit | 0 | | innodb_doublewrite | AÇIK | | innodb_doublewrite_file | | | innodb_fake_changes | KAPALI | | innodb_fast_checksum | KAPALI | | innodb_fast_shutdown | 1 | | innodb_file_format | Antilop | | innodb_file_format_check | AÇIK | | innodb_file_format_max | Antilop | | innodb_file_per_table | KAPALI | | innodb_flush_log_at_trx_commit | 2 | | innodb_flush_method | O_DIRECT | | innodb_flush_neighbor_pages | alanı | | innodb_force_load_corrupted | KAPALI | | 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 | KAPALI | | innodb_lazy_drop_table | 0 | | innodb_lock_wait_timeout | 50 | | innodb_locks_unsafe_for_binlog | KAPALI | | 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 | KAPALI | | innodb_read_ahead | doğrusal | | innodb_read_ahead_threshold | 56 | | innodb_read_io_threads | 4 | | innodb_recovery_stats | KAPALI | | innodb_recovery_update_relay_log | KAPALI | | innodb_replication_delay | 0 | | innodb_rollback_on_timeout | KAPALI | | 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 | AÇIK | | innodb_stats_sample_pages | 8 | | innodb_stats_update_need_lock | 1 | | innodb_strict_mode | KAPALI | | innodb_support_xa | AÇIK | | innodb_sync_spin_loops | 30 | | innodb_table_locks | AÇIK | | innodb_thread_concurrency | 0 | | innodb_thread_concurrency_timer_based | KAPALI | | innodb_thread_sleep_delay | 10000 | | innodb_use_global_flush_log_at_trx_commit | AÇIK | | innodb_use_native_aio | AÇIK | | innodb_use_sys_malloc | AÇIK | | innodb_use_sys_stats_table | KAPALI | | innodb_version | 1.1.8-rel26.0 | | innodb_write_io_threads | 4 | + ------------------------------------------- + ----- ------------------- + Sette 90 satır (0.00 saniye)
Numactl - hardware'i çalıştırdım ve işte aldığım çıktı. Yöneticimden yorumlar aşağıda belirtilmiştir (yoruma yönelik olarak).
root @ prog: / veri / mysql # numactl - donanım mevcut: 4 düğüm (0-3) düğüm 0 cpus: 0 1 2 3 düğüm 0 boyutu: 32766 MB düğüm 0 ücretsiz: 21480 MB düğüm 1 cpus: 4 5 6 7 düğüm 1 boyutu: 32768 MB düğüm 1 ücretsiz: 25285 MB düğüm 2 cpus: 12 13 14 15 düğüm 2 boyutu: 32768 MB düğüm 2 ücretsiz: 20376 MB düğüm 3 cpus: 8 9 10 11 düğüm 3 boyutu: 32768 MB düğüm 3 ücretsiz: 24898 MB düğüm mesafeleri: düğüm 0 1 2 3 0: 10 16 16 16 1: 16 10 16 16 2: 16 16 10 16 3: 16 16 16 10