šiuo metu sukasi ant ubuntu 10.10 ir mysql 5.1.49.
UPDATE vienintelės užklausos kuriose HDD lemputė sumirkčioja.
Užklausos pavyzdys: UPDATE buildings SET `lastTime` = '1290676129' WHERE id = 363
Dar pastebėjau, kad užklausos laikas nepriklauso nuo to, ar eilutę yra užrakinama su SELECT .... FOR UPDATE ar ne
Bus updeitinama būtent buildings eilutė. Kadangi ji yra pagrindinė, o aplikacija yra žaidimas, tai užklausų kiekio mažinti nebegaliu.
Beje, googlėje šia tema klausimų pilna, bet niekas nepaaiškino ką tai reiškia, ir kaip tai būtų galima spręsti.
Daugiau dėl pačio update, tai:
a) visada updeitinama tik pagal id, kuris yra primary
b) vienitelis indeksas yra id, kuris nesikeičia niekada (nebent yra įterpiami arba ištrinami įrašai)
c) iš esmės ryšiai neturėtų stabdyti, nes vienintelis ryšis yra pagal tą patį stulpelį id, kuris niekuomet nesikeičia.
Pats galvojau apjungti, bet nesugalvoju kaip reikėtų neskausmingai tai realizuoti programiniame kode.
Dar vienas pastebėjimas. Jeigu freeing items metu procesorius miega tas 65ms, tada nieko blogo, nes tuo metu CPU resursai tenka kitiems procesams, bet kaip tai patikrinti?
Beje, gal įžvelgsi kokį nors itin blogą nustatymą:
mysql> show variables like "%inno%";
+-----------------------------------------+------------------------+
| Variable_name | Value |
+-----------------------------------------+------------------------+
| have_innodb | YES |
| ignore_builtin_innodb | OFF |
| innodb_adaptive_hash_index | ON |
| innodb_additional_mem_pool_size | 33554432 |
| innodb_autoextend_increment | 8 |
| innodb_autoinc_lock_mode | 1 |
| innodb_buffer_pool_size | 268435456 |
| 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_io_threads | 4 |
| innodb_file_per_table | OFF |
| innodb_flush_log_at_trx_commit | 1 |
| innodb_flush_method | |
| innodb_force_recovery | 0 |
| innodb_lock_wait_timeout | 50 |
| innodb_locks_unsafe_for_binlog | OFF |
| innodb_log_buffer_size | 1048576 |
| innodb_log_file_size | 5242880 |
| innodb_log_files_in_group | 2 |
| innodb_log_group_home_dir | ./ |
| innodb_max_dirty_pages_pct | 90 |
| innodb_max_purge_lag | 0 |
| innodb_mirrored_log_groups | 1 |
| innodb_open_files | 300 |
| innodb_rollback_on_timeout | OFF |
| innodb_stats_on_metadata | ON |
| innodb_support_xa | ON |
| innodb_sync_spin_loops | 20 |
| innodb_table_locks | ON |
| innodb_thread_concurrency | 8 |
| innodb_thread_sleep_delay | 10000 |
| innodb_use_legacy_cardinality_algorithm | ON |
+-----------------------------------------+------------------------+
37 rows in set (0.00 sec)