Hardware fuer MySQL Server

Hardware fuer MySQL Server

am 03.09.2007 15:03:47 von spam-2007-06

Guten Nachmittag,

Ich verwalte zur Zeit einen DB Server mit folgende Spez.:

- HP DL360G4
- dual Intel(R) Xeon(R) CPU E5320 @ 1.86GHz
- 2GB RAM, SCSI Raid1
- OS: FreeBSD 6.1-RELEASE-p11

db1# pkg_info | grep mysql
mysql-client-5.0.45 Multithreaded SQL database (client)
mysql-server-5.0.45 Multithreaded SQL database (server)

db1# more /boot/loader.conf
kern.maxdsiz="1073741824" # 1GB
kern.dfldsiz="1073741824" # 1GB
kern.maxssiz="134217728" # 128MB

db1# more /etc/libmap.conf
[/usr/local/libexec/mysqld]
libpthread.so.2 libthr.so.2
libpthread.so libthr.so


Projekt DB: ca. 1.5GB gross, 30 Tables, davon 2 Grosse von ca. 300 und 500MB (MyISAM)

Requests:
select 12 M 25,54 k 28,20%
insert 3 474 k 7 583,05 8,37%
delete 846 k 1 846,73 2,04%
update 649 k 1 416,31 1,56%
=~ 102k requests/h

my.cnf:

set-variable = key_buffer=768M
set-variable = table_cache=4096
set-variable = sort_buffer=8M
set-variable = sort_buffer_size=8M
set-variable = join_buffer=8M
set-variable = join_buffer_size=8M
set-variable = read_buffer=8M
set-variable = read_buffer_size=8M
set-variable = record_buffer=8M
set-variable = myisam_sort_buffer_size=128M
set-variable = thread_cache=8
set-variable = max_connections=200
set-variable = query_cache_size=64M
set-variable = thread_concurrency=8
set-variable = read_rnd_buffer_size=8M
set-variable = key_buffer_size=64M
set-variable = max_allowed_packet=1024M

db1# ps fawux|grep mysql
mysql 5796 6.9 14.7 349464 306548 p3- S 15Aug07 20969:23.98 /usr/local/libexec/mysqld [...]
-> es nimmt auch nicht mehr als 350MB Ram, auch wenn 2GB frei wären.



Nun gibt es zu viel load (Webpage/Projekt hat auch immer mehr
Hits), und ich muss etwas dagegen machen. Code und Queries
sind schon optimiert worden, und ich nicht was ich noch in
my.cnf machen kann.

Ich vermute ich soll nun neues Hardware kaufen: ich kann "was
ich will" unter
http://h10010.www1.hp.com/wwpc/ch/de/sm/WF25a/133-139-372969 -372969-12083599-12569890.html
(hp DL360G5) nehmen: was würdet Ihr empfehlen?

zB lieber einen ganz schellen dual-core Xeon, oder einen
weniger schnellen quad-core Xeon? Als OS könnte ich auch linux
nehmen, falls es für die Perfomance wirklich hilft...

Projekt wird noch wachsen, und ich überlege fast direkt mit
einen MySQL Cluster zu arbeiten, aber leider sind viele Tabellen
mit "FULLTEXT INDEX", und das ist mit NDB leider (noch) nicht
wirklich kompatibel...

Vielen Dank um jeden Hinweis :-)
MfG,
Olivier

Re: Hardware fuer MySQL Server

am 03.09.2007 19:23:57 von df4or

Olivier M. wrote:

[...]
> Ich vermute ich soll nun neues Hardware kaufen: ich kann "was
> ich will" unter
>
http://h10010.www1.hp.com/wwpc/ch/de/sm/WF25a/133-139-372969 -372969-12083599-12569890.html
> (hp DL360G5) nehmen: was würdet Ihr empfehlen?
[...]

Kris Koehntopp hat kürzlich in seinem Blog dazu einen netten Artikel
geschrieben, hiermit empfohlen.

http://blog.koehntopp.de/archives/1804-Eine-MySQL-Installati on-planen.html

Gruß,
Ekki

Re: Hardware fuer MySQL Server

am 03.09.2007 23:11:02 von Axel Schwenke

"Olivier M." wrote:
>
> Ich verwalte zur Zeit einen DB Server mit folgende Spez.:
>
> - HP DL360G4
> - dual Intel(R) Xeon(R) CPU E5320 @ 1.86GHz

Ist das schon Core-Technologie?
Die alten Xeons waren doch eher bei 3GHz...

> - 2GB RAM, SCSI Raid1
> - OS: FreeBSD 6.1-RELEASE-p11
>
> mysql-server-5.0.45 Multithreaded SQL database (server)
>
> Projekt DB: ca. 1.5GB gross, 30 Tables, davon 2 Grosse von ca. 300 und 500MB (MyISAM)

Das ist dannn ja eher klein. Ich nehme an, 1.5GB ist die Summe.
Wieviel davon entfällt auf Indizes (*.MYI) ?

> Requests:
> select 12 M 25,54 k 28,20%
> insert 3 474 k 7 583,05 8,37%
> delete 846 k 1 846,73 2,04%
> update 649 k 1 416,31 1,56%
> =~ 102k requests/h

Weiß nicht, was mir die ersten Zahlenkolonnen sagen sollen.
Aber 100.000 Queries pro Stunde sind gerade mal 28 pro Sekunde.
Da sollte Faktor 10 mehr drin sein.

> my.cnf:
>
> set-variable = key_buffer=768M
> set-variable = table_cache=4096
> set-variable = sort_buffer=8M
> set-variable = sort_buffer_size=8M
> set-variable = join_buffer=8M
> set-variable = join_buffer_size=8M
> set-variable = read_buffer=8M
> set-variable = read_buffer_size=8M
> set-variable = record_buffer=8M
> set-variable = myisam_sort_buffer_size=128M
> set-variable = thread_cache=8
> set-variable = max_connections=200
> set-variable = query_cache_size=64M
> set-variable = thread_concurrency=8
> set-variable = read_rnd_buffer_size=8M
> set-variable = max_allowed_packet=1024M
> set-variable = key_buffer_size=64M

Gibts einen Grund, warum du die Variable zweimal setzt?
Einmal als key_buffer und einmal als key_buffer_size?
Außerdem ist set-variable mindestens seit 4.x deprecated.
Die wahren Werte verrät dir SHOW [GLOBAL] VARIABLES.
Und wenn du uns SHOW GLOBAL STATUS zeigst, können wir dir
vielleicht noch den einen oder anderen Tip geben...

> db1# ps fawux|grep mysql
> mysql 5796 6.9 14.7 349464 306548 p3- S 15Aug07 20969:23.98 /usr/local/libexec/mysqld [...]
> -> es nimmt auch nicht mehr als 350MB Ram, auch wenn 2GB frei wären.

Das spricht dafür, daß nur 64MB key_buffer benutzt werden.
Korrigier das mal. Dann wird das bestimmt schneller.

> Nun gibt es zu viel load (Webpage/Projekt hat auch immer mehr
> Hits), und ich muss etwas dagegen machen. Code und Queries
> sind schon optimiert worden, und ich nicht was ich noch in
> my.cnf machen kann.

Du hast das Handbuch gelesen? Da gibts ein ganzes Kapitel nur
über Optimierung.

> Ich vermute ich soll nun neues Hardware kaufen

Nein. Ohne vorherige Analyse *was* denn nun langsam ist und
*warum* ist das nur Geldverschwendung.

> Projekt wird noch wachsen, und ich überlege fast direkt mit
> einen MySQL Cluster zu arbeiten, aber leider sind viele Tabellen
> mit "FULLTEXT INDEX", und das ist mit NDB leider (noch) nicht
> wirklich kompatibel...

Die MySQL-"Volltextsuche" ist ohnehin selten glückbringend.
Vielleicht gefällt dir ja die Kombination aus NDB und externer
Suchmaschine (z.B. Lucene) besser.


XL

Re: Hardware fuer MySQL Server

am 04.09.2007 06:58:14 von spam-2007-06

ecrivait/schrieb/wrote:
> Kris Koehntopp hat kürzlich in seinem Blog dazu einen netten Artikel
> geschrieben, hiermit empfohlen.
> http://blog.koehntopp.de/archives/1804-Eine-MySQL-Installati on-planen.html

Merci, sieht ganz interessant aus, werde ich gleich studieren!
Viele Grüsse,
Olivier

Re: Hardware fuer MySQL Server

am 04.09.2007 08:07:09 von spam-2007-06

Guten morgen,

ecrivait/schrieb/wrote:
>> - HP DL360G4
>> - dual Intel(R) Xeon(R) CPU E5320 @ 1.86GHz
>
> Ist das schon Core-Technologie?

ja, ca 1 Jahr alt würde ich sagen.

>> Projekt DB: ca. 1.5GB gross, 30 Tables, davon 2 Grosse von ca. 300 und 500MB (MyISAM)
>
> Das ist dannn ja eher klein. Ich nehme an, 1.5GB ist die Summe.
> Wieviel davon entfällt auf Indizes (*.MYI) ?

es sieht so aus (die grössten Files):

[...]
-rw-rw---- 1 mysql mysql 58'102'784 Sep 4 06:58 table2.MYI
-rw-rw---- 1 mysql mysql 90'985'472 Sep 4 06:57 table3.MYI
-rw-rw---- 1 mysql mysql 99'084'184 Sep 4 06:57 table3.MYD
-rw-rw---- 1 mysql mysql 226'262'684 Sep 4 06:57 table1.MYD
-rw-rw---- 1 mysql mysql 266'460'452 Sep 4 06:58 table2.MYD
-rw-rw---- 1 mysql mysql 342'447'104 Sep 4 06:57 table1.MYI

> Gibts einen Grund, warum du die Variable zweimal setzt?
> Einmal als key_buffer und einmal als key_buffer_size?

mmm... copy-paste issues... :)

> Außerdem ist set-variable mindestens seit 4.x deprecated.
> Die wahren Werte verrät dir SHOW [GLOBAL] VARIABLES.
> Und wenn du uns SHOW GLOBAL STATUS zeigst, können wir dir
> vielleicht noch den einen oder anderen Tip geben...

ok, dann wird es ein wenig lang, aber wieso nicht:
(replication activ)

mysql> SHOW GLOBAL VARIABLES;
+---------------------------------+------------------------- --------------------------------+
| Variable_name | Value |
+---------------------------------+------------------------- --------------------------------+
| auto_increment_increment | 1 |
| auto_increment_offset | 1 |
| automatic_sp_privileges | ON |
| back_log | 50 |
| basedir | /usr/local/ |
| bdb_cache_size | 8388600 |
| bdb_home | /var/db/mysql/ |
| bdb_log_buffer_size | 2097152 |
| bdb_logdir | |
| bdb_max_lock | 10000 |
| bdb_shared_data | OFF |
| bdb_tmpdir | /var/tmp/ |
| binlog_cache_size | 32768 |
| bulk_insert_buffer_size | 8388608 |
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/share/mysql/charsets/ |
| collation_connection | latin1_swedish_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
| completion_type | 0 |
| concurrent_insert | 1 |
| connect_timeout | 5 |
| datadir | /var/db/mysql/ |
| date_format | %Y-%m-%d |
| datetime_format | %Y-%m-%d %H:%i:%s |
| default_week_format | 0 |
| delay_key_write | ON |
| delayed_insert_limit | 100 |
| delayed_insert_timeout | 300 |
| delayed_queue_size | 1000 |
| div_precision_increment | 4 |
| engine_condition_pushdown | OFF |
| expire_logs_days | 0 |
| flush | OFF |
| flush_time | 0 |
| ft_boolean_syntax | + -><()~*:""&| |
| ft_max_word_len | 84 |
| ft_min_word_len | 3 |
| ft_query_expansion_limit | 20 |
| ft_stopword_file | (built-in) |
| group_concat_max_len | 1024 |
| have_archive | NO |
| have_bdb | YES |
| have_blackhole_engine | NO |
| have_compress | YES |
| have_crypt | YES |
| have_csv | NO |
| have_dynamic_loading | YES |
| have_example_engine | NO |
| have_federated_engine | NO |
| have_geometry | YES |
| have_innodb | YES |
| have_isam | NO |
| have_merge_engine | YES |
| have_ndbcluster | NO |
| have_openssl | NO |
| have_ssl | NO |
| have_query_cache | YES |
| have_raid | NO |
| have_rtree_keys | YES |
| have_symlink | YES |
| hostname | db1 |
| init_connect | |
| init_file | |
| init_slave | |
| innodb_additional_mem_pool_size | 1048576 |
....
| innodb_thread_sleep_delay | 10000 |
| interactive_timeout | 28800 |
| join_buffer_size | 8384512 |
| key_buffer_size | 67108864 |
| key_cache_age_threshold | 300 |
| key_cache_block_size | 1024 |
| key_cache_division_limit | 100 |
| language | /usr/local/share/mysql/english/ |
| large_files_support | ON |
| large_page_size | 0 |
| large_pages | OFF |
| lc_time_names | en_US |
| license | GPL |
| local_infile | ON |
| locked_in_memory | OFF |
| log | OFF |
| log_bin | ON |
| log_bin_trust_function_creators | OFF |
| log_error | |
| log_queries_not_using_indexes | OFF |
| log_slave_updates | OFF |
| log_slow_queries | ON |
| log_warnings | 2 |
| long_query_time | 10 |
| low_priority_updates | OFF |
| lower_case_file_system | OFF |
| lower_case_table_names | 0 |
| max_allowed_packet | 1073740800 |
| max_binlog_cache_size | 4294967295 |
| max_binlog_size | 52428800 |
| max_connect_errors | 10 |
| max_connections | 200 |
| max_delayed_threads | 20 |
| max_error_count | 64 |
| max_heap_table_size | 16777216 |
| max_insert_delayed_threads | 20 |
| max_join_size | 4294967295 |
| max_length_for_sort_data | 1024 |
| max_prepared_stmt_count | 16382 |
| max_relay_log_size | 52428800 |
| max_seeks_for_key | 4294967295 |
| max_sort_length | 1024 |
| max_sp_recursion_depth | 0 |
| max_tmp_tables | 32 |
| max_user_connections | 0 |
| max_write_lock_count | 4294967295 |
| multi_range_count | 256 |
| myisam_data_pointer_size | 6 |
| myisam_max_sort_file_size | 2147483647 |
| myisam_recover_options | OFF |
| myisam_repair_threads | 1 |
| myisam_sort_buffer_size | 134217728 |
| myisam_stats_method | nulls_unequal |
| net_buffer_length | 16384 |
| net_read_timeout | 30 |
| net_retry_count | 1000000 |
| net_write_timeout | 60 |
| new | OFF |
| old_passwords | OFF |
| open_files_limit | 11095 |
| optimizer_prune_level | 1 |
| optimizer_search_depth | 62 |
| pid_file | /var/db/mysql/db1.pid |
| port | 3306 |
| preload_buffer_size | 32768 |
| profiling | OFF |
| profiling_history_size | 15 |
| protocol_version | 10 |
| query_alloc_block_size | 8192 |
| query_cache_limit | 1048576 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 67108864 |
| query_cache_type | ON |
| query_cache_wlock_invalidate | OFF |
| query_prealloc_size | 8192 |
| range_alloc_block_size | 2048 |
| read_buffer_size | 8384512 |
| read_only | OFF |
| read_rnd_buffer_size | 8384512 |
| relay_log_purge | ON |
| relay_log_space_limit | 0 |
| rpl_recovery_rank | 0 |
| secure_auth | OFF |
| secure_file_priv | |
| server_id | 1 |
| skip_external_locking | ON |
| skip_networking | OFF |
| skip_show_database | OFF |
| slave_compressed_protocol | OFF |
| slave_load_tmpdir | /var/tmp/ |
| slave_net_timeout | 3600 |
| slave_skip_errors | OFF |
| slave_transaction_retries | 10 |
| slow_launch_time | 2 |
| socket | /tmp/mysql.sock |
| sort_buffer_size | 8388600 |
| sql_big_selects | ON |
| sql_mode | |
| sql_notes | ON |
| sql_warnings | OFF |
| ssl_ca | |
| ssl_capath | |
| ssl_cert | |
| ssl_cipher | |
| ssl_key | |
| storage_engine | MyISAM |
| sync_binlog | 0 |
| sync_frm | ON |
| system_time_zone | CEST |
| table_cache | 4096 |
| table_lock_wait_timeout | 50 |
| table_type | MyISAM |
| thread_cache_size | 8 |
| thread_stack | 196608 |
| time_format | %H:%i:%s |
| time_zone | SYSTEM |
| timed_mutexes | OFF |
| tmp_table_size | 33554432 |
| tmpdir | /var/tmp/ |
| transaction_alloc_block_size | 8192 |
| transaction_prealloc_size | 4096 |
| tx_isolation | REPEATABLE-READ |
| updatable_views_with_limit | YES |
| version | 5.0.45-log |
| version_bdb | Sleepycat Software: Berkeley DB 4.1.24: (July 4, 2007) |
| version_comment | FreeBSD port: mysql-server-5.0.45 |
| version_compile_machine | i386 |
| version_compile_os | portbld-freebsd6.1 |
| wait_timeout | 28800 |
+---------------------------------+------------------------- --------------------------------+
233 rows in set (0.00 sec)

mysql> SHOW GLOBAL STATUS;
+-----------------------------------+-------------+
| Variable_name | Value |
+-----------------------------------+-------------+
| Aborted_clients | 6292 |
| Aborted_connects | 829 |
| Binlog_cache_disk_use | 0 |
| Binlog_cache_use | 0 |
| Bytes_received | 11921206138 |
| Bytes_sent | 9321308809 |
| Com_admin_commands | 1 |
| Com_alter_db | 0 |
| Com_alter_table | 0 |
| Com_analyze | 0 |
| Com_backup_table | 0 |
| Com_begin | 0 |
| Com_call_procedure | 0 |
| Com_change_db | 36744 |
| Com_change_master | 0 |
| Com_check | 1 |
| Com_checksum | 0 |
| Com_commit | 0 |
| Com_create_db | 0 |
| Com_create_function | 0 |
| Com_create_index | 0 |
| Com_create_table | 0 |
| Com_create_user | 0 |
| Com_dealloc_sql | 0 |
| Com_delete | 877136 |
| Com_delete_multi | 0 |
| Com_do | 0 |
| Com_drop_db | 0 |
| Com_drop_function | 0 |
| Com_drop_index | 0 |
| Com_drop_table | 0 |
| Com_drop_user | 0 |
| Com_execute_sql | 0 |
| Com_flush | 0 |
| Com_grant | 0 |
| Com_ha_close | 0 |
| Com_ha_open | 0 |
| Com_ha_read | 0 |
| Com_help | 0 |
| Com_insert | 3598944 |
| Com_insert_select | 0 |
| Com_kill | 0 |
| Com_load | 0 |
| Com_load_master_data | 0 |
| Com_load_master_table | 0 |
| Com_lock_tables | 0 |
| Com_optimize | 0 |
| Com_preload_keys | 0 |
| Com_prepare_sql | 0 |
| Com_purge | 59 |
| Com_purge_before_date | 0 |
| Com_rename_table | 0 |
| Com_repair | 0 |
| Com_replace | 0 |
| Com_replace_select | 0 |
| Com_reset | 0 |
| Com_restore_table | 0 |
| Com_revoke | 0 |
| Com_revoke_all | 0 |
| Com_rollback | 0 |
| Com_savepoint | 0 |
| Com_select | 12150664 |
| Com_set_option | 761 |
| Com_show_binlog_events | 0 |
| Com_show_binlogs | 80 |
| Com_show_charsets | 178 |
| Com_show_collations | 178 |
| Com_show_column_types | 0 |
| Com_show_create_db | 0 |
| Com_show_create_table | 70 |
| Com_show_databases | 179 |
| Com_show_errors | 0 |
| Com_show_fields | 2448 |
| Com_show_grants | 88 |
| Com_show_innodb_status | 0 |
| Com_show_keys | 57 |
| Com_show_logs | 0 |
| Com_show_master_status | 0 |
| Com_show_ndb_status | 0 |
| Com_show_new_master | 0 |
| Com_show_open_tables | 0 |
| Com_show_privileges | 0 |
| Com_show_processlist | 28516 |
| Com_show_slave_hosts | 1 |
| Com_show_slave_status | 0 |
| Com_show_status | 6 |
| Com_show_storage_engines | 0 |
| Com_show_tables | 596 |
| Com_show_triggers | 0 |
| Com_show_variables | 374 |
| Com_show_warnings | 0 |
| Com_slave_start | 0 |
| Com_slave_stop | 0 |
| Com_stmt_close | 0 |
| Com_stmt_execute | 0 |
| Com_stmt_fetch | 0 |
| Com_stmt_prepare | 0 |
| Com_stmt_reset | 0 |
| Com_stmt_send_long_data | 0 |
| Com_truncate | 0 |
| Com_unlock_tables | 0 |
| Com_update | 668012 |
| Com_update_multi | 0 |
| Com_xa_commit | 0 |
| Com_xa_end | 0 |
| Com_xa_prepare | 0 |
| Com_xa_recover | 0 |
| Com_xa_rollback | 0 |
| Com_xa_start | 0 |
| Compression | OFF |
| Connections | 5627326 |
| Created_tmp_disk_tables | 224254 |
| Created_tmp_files | 189 |
| Created_tmp_tables | 1479744 |
| Delayed_errors | 0 |
| Delayed_insert_threads | 0 |
| Delayed_writes | 0 |
| Flush_commands | 1 |
| Handler_commit | 0 |
| Handler_delete | 800030 |
| Handler_discover | 0 |
| Handler_prepare | 0 |
| Handler_read_first | 319166 |
| Handler_read_key | 2585924554 |
| Handler_read_next | 581424171 |
| Handler_read_prev | 29 |
| Handler_read_rnd | 1003217510 |
| Handler_read_rnd_next | 1722542479 |
| Handler_rollback | 0 |
| Handler_savepoint | 0 |
| Handler_savepoint_rollback | 0 |
| Handler_update | 1777929654 |
| Handler_write | 87371608 |
| Innodb_buffer_pool_pages_data | 20 |
....
| Innodb_rows_updated | 0 |
| Key_blocks_not_flushed | 0 |
| Key_blocks_unused | 0 |
| Key_blocks_used | 57990 |
| Key_read_requests | 64862244501 |
| Key_reads | 25971743 |
| Key_write_requests | 16700349 |
| Key_writes | 14429617 |
| Last_query_cost | 0.000000 |
| Max_used_connections | 201 |
| Not_flushed_delayed_rows | 0 |
| Open_files | 737 |
| Open_streams | 0 |
| Open_tables | 625 |
| Opened_tables | 632 |
| Prepared_stmt_count | 0 |
| Qcache_free_blocks | 1028 |
| Qcache_free_memory | 45922440 |
| Qcache_hits | 25737474 |
| Qcache_inserts | 10061226 |
| Qcache_lowmem_prunes | 275882 |
| Qcache_not_cached | 2094287 |
| Qcache_queries_in_cache | 2999 |
| Qcache_total_blocks | 7540 |
| Questions | 48725633 |
| Rpl_status | NULL |
| Select_full_join | 180205 |
| Select_full_range_join | 0 |
| Select_range | 2386441 |
| Select_range_check | 0 |
| Select_scan | 389059 |
| Slave_open_temp_tables | 0 |
| Slave_retried_transactions | 0 |
| Slave_running | ON |
| Slow_launch_threads | 0 |
| Slow_queries | 143519 |
| Sort_merge_passes | 92 |
| Sort_range | 2195986 |
| Sort_rows | 917721452 |
| Sort_scan | 843091 |
| Table_locks_immediate | 18362347 |
| Table_locks_waited | 546474 |
| Tc_log_max_pages_used | 0 |
| Tc_log_page_size | 0 |
| Tc_log_page_waits | 0 |
| Threads_cached | 6 |
| Threads_connected | 5 |
| Threads_created | 62630 |
| Threads_running | 3 |
| Uptime | 1710888 |
| Uptime_since_flush_status | 1710888 |
+-----------------------------------+-------------+
226 rows in set (0.00 sec)

>> Requests:
>> select 12 M 25,54 k 28,20%
>> insert 3 474 k 7 583,05 8,37%
>> delete 846 k 1 846,73 2,04%
>> update 649 k 1 416,31 1,56%
>> =~ 102k requests/h
>
> Weiß nicht, was mir die ersten Zahlenkolonnen sagen sollen.
> Aber 100.000 Queries pro Stunde sind gerade mal 28 pro Sekunde.
> Da sollte Faktor 10 mehr drin sein.

eben, das finde ich auch komisch...

>> db1# ps fawux|grep mysql
>> mysql 5796 6.9 14.7 349464 306548 p3- S 15Aug07 20969:23.98 /usr/local/libexec/mysqld [...]
>> -> es nimmt auch nicht mehr als 350MB Ram, auch wenn 2GB frei wären.
>
> Das spricht dafür, daß nur 64MB key_buffer benutzt werden.
> Korrigier das mal. Dann wird das bestimmt schneller.

ok, werde ich gleich tun, danke. (scheint durch SHOW VARIABLES bestättigt zu sein).

> Du hast das Handbuch gelesen? Da gibts ein ganzes Kapitel nur
> über Optimierung.

Teilweise schon, aber anscheinend zu wenig... Werde ich jedenfalls noch
machen vor einen neuen HW kauf.

>> Projekt wird noch wachsen, und ich überlege fast direkt mit
>> einen MySQL Cluster zu arbeiten, aber leider sind viele Tabellen
>> mit "FULLTEXT INDEX", und das ist mit NDB leider (noch) nicht
>> wirklich kompatibel...
>
> Die MySQL-"Volltextsuche" ist ohnehin selten glückbringend.
> Vielleicht gefällt dir ja die Kombination aus NDB und externer
> Suchmaschine (z.B. Lucene) besser.

Ja, Lucene oder zB siets (http://www.siets.biz/) steht bei uns
auf die "Wish-List", falls es mit MySQL nicht besser geht. Die Tabellen
mit FULLTEXT Indexes sind aber (noch) nicht so gross: hier lässt sich
bestimmt noch was optimieren.

To be continued, noch vielen dank für Deine Kommentare!
Olivier

Re: Hardware fuer MySQL Server

am 04.09.2007 11:39:33 von Axel Schwenke

"Olivier M." wrote:
> ecrivait/schrieb/wrote:

> Guten morgen,
Moin moin,

>>> Projekt DB: ca. 1.5GB gross, 30 Tables, davon 2 Grosse von ca. 300 und 500MB (MyISAM)
>>
>> Das ist dannn ja eher klein. Ich nehme an, 1.5GB ist die Summe.
>> Wieviel davon entfällt auf Indizes (*.MYI) ?
>
> es sieht so aus (die grössten Files):
>
> [...]
> -rw-rw---- 1 mysql mysql 58'102'784 Sep 4 06:58 table2.MYI
> -rw-rw---- 1 mysql mysql 90'985'472 Sep 4 06:57 table3.MYI
> -rw-rw---- 1 mysql mysql 99'084'184 Sep 4 06:57 table3.MYD
> -rw-rw---- 1 mysql mysql 226'262'684 Sep 4 06:57 table1.MYD
> -rw-rw---- 1 mysql mysql 266'460'452 Sep 4 06:58 table2.MYD
> -rw-rw---- 1 mysql mysql 342'447'104 Sep 4 06:57 table1.MYI

Hmm. Kann FreeBSD kein 'ls -lh *.MYI' ? Aber egal. Ich sehe da ca.
500MB an Indexfiles. Aber nur:

>| key_buffer_size | 67108864 |

64MB key_buffer. Bekanntlich ist der key_buffer der in-memory-cache
für MyISAM-Indizes. Wenn der zu klein ist, gehen auch Index-Zugriffe
über die Platte und das ist natürlich langsaaaaam.

Also dreh das mal hypsch nach oben. 768MB wie du erst wolltest, müssen
es nicht sein. Aber 512MB wären nicht verkehrt.

Laß mich mal weiter sehen:

>| have_bdb | YES |
>| have_innodb | YES |

Benutzt du BDB- oder InnoDB-Tabellen? Wenn nicht, dann schalte die
Engines besser aus. Das spart noch etwas Speicher.

>| log_slow_queries | ON |
>| log_queries_not_using_indexes | OFF |
>| long_query_time | 10 |

Gut: du schreibst ein slow-log. Schlecht: 10 Sekunden sind arg lang
für eine Web-Applikation. Und evtl. hilft dir ein log der Queries,
die keinen Index benutzen, auch weiter.

>| max_heap_table_size | 16777216 |
>| tmp_table_size | 33554432 |

Oft gesehen. Da Temp Tables die Heap-Engine benutzen, sollte max Heap
Table Size >= Temp Table Size sein.


> mysql> SHOW GLOBAL STATUS;
....
>| Created_tmp_disk_tables | 224254 |
>| Created_tmp_tables | 1479744 |

Da geht verdammt viel auf Platte. Mal sehen, ob das besser wird wenn
du max Heap Table Size angepaßt hast. Notfalls noch höher gehen.

>| Handler_read_first | 319166 |
>| Handler_read_key | 2585924554 |
>| Handler_read_next | 581424171 |
>| Handler_read_prev | 29 |
>| Handler_read_rnd | 1003217510 |
>| Handler_read_rnd_next | 1722542479 |

Das sieht so weit gut aus. Die meisten Rows werden über einen Index
gelesen (Read_key/next/prev).

>| Key_blocks_unused | 0 |
>| Key_blocks_used | 57990 |

Yep. key_buffer komplett benutzt.

>| Key_read_requests | 64862244501 |
>| Key_reads | 25971743 |

Das ist interessant. Nur ca. 1 von 3000 Index-Reads geht tatsächlich
auf die Platte. Der aktive Teil scheint klein zu sein.

>| Open_tables | 625 |
>| Opened_tables | 632 |

Offensichtlich kannst du den table_cache runterdrehen. 1000 reicht.

>| Qcache_free_blocks | 1028 |
>| Qcache_free_memory | 45922440 |
>| Qcache_hits | 25737474 |
>| Qcache_inserts | 10061226 |
>| Qcache_lowmem_prunes | 275882 |
>| Qcache_not_cached | 2094287 |
>| Qcache_queries_in_cache | 2999 |
>| Qcache_total_blocks | 7540 |
>| Questions | 48725633 |

Der Query Cache ist gut für 2/3 der SELECTs und nicht voll. Gut.

>| Select_full_join | 180205 |

Das sind JOINs ohne JOIN-Bedingung.

>| Select_range | 2386441 |

Das sind Index-Scans

>| Select_scan | 389059 |

Und das Table-Scans

>| Slow_queries | 143519 |
>| Uptime | 1710888 |

Yo. Eine ca. alle 12 Sekunden. Da dürfte noch Optimierungs-
potential liegen. Laß dir von mysqlbinlog eine Liste der häufigsten
Slow Queries geben. Dann benutze EXPLAIN und $BRAIN :)


XL

Re: Hardware fuer MySQL Server

am 04.09.2007 12:28:34 von spam-2007-06

bonjour Axel, herzlichen Dank für Deine Analyse!

ecrivait/schrieb/wrote:
> 64MB key_buffer. Bekanntlich ist der key_buffer der in-memory-cache
> für MyISAM-Indizes. Wenn der zu klein ist, gehen auch Index-Zugriffe
> über die Platte und das ist natürlich langsaaaaam.

ja, hier war noch ein Bug in my.cnf:
set-variable = key_buffer=768M
set-variable = key_buffer_size=64M

Nun ist die zweite Zeile weg und es geht schon viel besser...

> [...]
> Yo. Eine ca. alle 12 Sekunden. Da dürfte noch Optimierungs-
> potential liegen. Laß dir von mysqlbinlog eine Liste der häufigsten
> Slow Queries geben. Dann benutze EXPLAIN und $BRAIN :)

Slow-query Zeit und ich leite das ganze an meine programmierer-kollegen
weiter. Nochmals danke für die gute Ideen.

Grüsse,
Olivier

Re: Hardware fuer MySQL Server

am 05.09.2007 10:49:20 von spam-2007-06

ecrivait/schrieb/wrote:
> Guten Nachmittag,
> Ich verwalte zur Zeit einen DB Server mit folgende Spez.:
> [...]

Nun habe ich my.cnf ein wenig optimiert (noch vielen Dank fürs
feedback!): gestern abend hat es besser funktionniert, aber noch nicht
ganz gut (immer gegen 20h-21h gibt es probleme wegen hohen load).

Es gibt noch viele "slow queries" (JOIN's), aber es sieht jetzt
mal so aus: Falls es hier noch was zu optimieren ist, feedback welcome :)


db1# cat /etc/my.cnf

[mysqld]
long_query_time=5
log-slow-queries=/var/db/mysql/slowquery.log

key_buffer = 512M
table_cache = 1024
sort_buffer = 8M
sort_buffer_size = 8M
join_buffer = 16M
join_buffer_size = 16M
read_buffer = 16M
read_buffer_size = 16M
record_buffer = 8M
myisam_sort_buffer_size = 128M
thread_cache = 50
max_connections = 200
query_cache_size = 64M
thread_concurrency = 8
read_rnd_buffer_size = 8M
max_allowed_packet = 1024M

skip-innodb
skip-bdb
skip-name-resolve

max_heap_table_size = 512M
tmp_table_size = 512M

wait_timeout = 120




mysql> SHOW GLOBAL VARIABLES;
+---------------------------------+------------------------- --------------------------------+
| Variable_name | Value |
+---------------------------------+------------------------- --------------------------------+
| auto_increment_increment | 1 |
| auto_increment_offset | 1 |
| automatic_sp_privileges | ON |
| back_log | 50 |
| basedir | /usr/local/ |
| bdb_cache_size | 8388600 |
| bdb_home | |
| bdb_log_buffer_size | 0 |
| bdb_logdir | |
| bdb_max_lock | 10000 |
| bdb_shared_data | OFF |
| bdb_tmpdir | |
| binlog_cache_size | 32768 |
| bulk_insert_buffer_size | 8388608 |
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/share/mysql/charsets/ |
| collation_connection | latin1_swedish_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
| completion_type | 0 |
| concurrent_insert | 1 |
| connect_timeout | 5 |
| datadir | /var/db/mysql/ |
| date_format | %Y-%m-%d |
| datetime_format | %Y-%m-%d %H:%i:%s |
| default_week_format | 0 |
| delay_key_write | ON |
| delayed_insert_limit | 100 |
| delayed_insert_timeout | 300 |
| delayed_queue_size | 1000 |
| div_precision_increment | 4 |
| engine_condition_pushdown | OFF |
| expire_logs_days | 0 |
| flush | OFF |
| flush_time | 0 |
| ft_boolean_syntax | + -><()~*:""&| |
| ft_max_word_len | 84 |
| ft_min_word_len | 3 |
| ft_query_expansion_limit | 20 |
| ft_stopword_file | (built-in) |
| group_concat_max_len | 1024 |
| have_archive | NO |
| have_bdb | DISABLED |
| have_blackhole_engine | NO |
| have_compress | YES |
| have_crypt | YES |
| have_csv | NO |
| have_dynamic_loading | YES |
| have_example_engine | NO |
| have_federated_engine | NO |
| have_geometry | YES |
| have_innodb | DISABLED |
| have_isam | NO |
| have_merge_engine | YES |
| have_ndbcluster | NO |
| have_openssl | NO |
| have_ssl | NO |
| have_query_cache | YES |
| have_raid | NO |
| have_rtree_keys | YES |
| have_symlink | YES |
| hostname | db1 |
| init_connect | |
| init_file | |
| init_slave | |
| interactive_timeout | 28800 |
| join_buffer_size | 16773120 |
| key_buffer_size | 536870912 |
| key_cache_age_threshold | 300 |
| key_cache_block_size | 1024 |
| key_cache_division_limit | 100 |
| language | /usr/local/share/mysql/english/ |
| large_files_support | ON |
| large_page_size | 0 |
| large_pages | OFF |
| lc_time_names | en_US |
| license | GPL |
| local_infile | ON |
| locked_in_memory | OFF |
| log | OFF |
| log_bin | ON |
| log_bin_trust_function_creators | OFF |
| log_error | |
| log_queries_not_using_indexes | OFF |
| log_slave_updates | OFF |
| log_slow_queries | ON |
| log_warnings | 2 |
| long_query_time | 5 |
| low_priority_updates | OFF |
| lower_case_file_system | OFF |
| lower_case_table_names | 0 |
| max_allowed_packet | 1073740800 |
| max_binlog_cache_size | 4294967295 |
| max_binlog_size | 52428800 |
| max_connect_errors | 10 |
| max_connections | 200 |
| max_delayed_threads | 20 |
| max_error_count | 64 |
| max_heap_table_size | 536870912 |
| max_insert_delayed_threads | 20 |
| max_join_size | 4294967295 |
| max_length_for_sort_data | 1024 |
| max_prepared_stmt_count | 16382 |
| max_relay_log_size | 52428800 |
| max_seeks_for_key | 4294967295 |
| max_sort_length | 1024 |
| max_sp_recursion_depth | 0 |
| max_tmp_tables | 32 |
| max_user_connections | 0 |
| max_write_lock_count | 4294967295 |
| multi_range_count | 256 |
| myisam_data_pointer_size | 6 |
| myisam_max_sort_file_size | 2147483647 |
| myisam_recover_options | OFF |
| myisam_repair_threads | 1 |
| myisam_sort_buffer_size | 134217728 |
| myisam_stats_method | nulls_unequal |
| net_buffer_length | 16384 |
| net_read_timeout | 30 |
| net_retry_count | 1000000 |
| net_write_timeout | 60 |
| new | OFF |
| old_passwords | OFF |
| open_files_limit | 11095 |
| optimizer_prune_level | 1 |
| optimizer_search_depth | 62 |
| pid_file | /var/db/mysql/db1.pid |
| port | 3306 |
| preload_buffer_size | 32768 |
| profiling | OFF |
| profiling_history_size | 15 |
| protocol_version | 10 |
| query_alloc_block_size | 8192 |
| query_cache_limit | 1048576 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 67108864 |
| query_cache_type | ON |
| query_cache_wlock_invalidate | OFF |
| query_prealloc_size | 8192 |
| range_alloc_block_size | 2048 |
| read_buffer_size | 8384512 |
| read_only | OFF |
| read_rnd_buffer_size | 8384512 |
| relay_log_purge | ON |
| relay_log_space_limit | 0 |
| rpl_recovery_rank | 0 |
| secure_auth | OFF |
| secure_file_priv | |
| server_id | 1 |
| skip_external_locking | ON |
| skip_networking | OFF |
| skip_show_database | OFF |
| slave_compressed_protocol | OFF |
| slave_load_tmpdir | /var/tmp/ |
| slave_net_timeout | 3600 |
| slave_skip_errors | OFF |
| slave_transaction_retries | 10 |
| slow_launch_time | 2 |
| socket | /tmp/mysql.sock |
| sort_buffer_size | 8388600 |
| sql_big_selects | ON |
| sql_mode | |
| sql_notes | ON |
| sql_warnings | OFF |
| ssl_ca | |
| ssl_capath | |
| ssl_cert | |
| ssl_cipher | |
| ssl_key | |
| storage_engine | MyISAM |
| sync_binlog | 0 |
| sync_frm | ON |
| system_time_zone | CEST |
| table_cache | 1024 |
| table_lock_wait_timeout | 50 |
| table_type | MyISAM |
| thread_cache_size | 40 |
| thread_stack | 196608 |
| time_format | %H:%i:%s |
| time_zone | SYSTEM |
| timed_mutexes | OFF |
| tmp_table_size | 536870912 |
| tmpdir | /var/tmp/ |
| transaction_alloc_block_size | 8192 |
| transaction_prealloc_size | 4096 |
| tx_isolation | REPEATABLE-READ |
| updatable_views_with_limit | YES |
| version | 5.0.45-log |
| version_bdb | Sleepycat Software: Berkeley DB 4.1.24: (July 4, 2007) |
| version_comment | FreeBSD port: mysql-server-5.0.45 |
| version_compile_machine | i386 |
| version_compile_os | portbld-freebsd6.1 |
| wait_timeout | 120 |
+---------------------------------+------------------------- --------------------------------+
233 rows in set (0.00 sec)



mysql> SHOW GLOBAL STATUS;
+-----------------------------------+------------+
| Variable_name | Value |
+-----------------------------------+------------+
| Aborted_clients | 202 |
| Aborted_connects | 0 |
| Binlog_cache_disk_use | 0 |
| Binlog_cache_use | 0 |
| Bytes_received | 598240810 |
| Bytes_sent | 2159265878 |
| Com_admin_commands | 1 |
| Com_alter_db | 0 |
| Com_alter_table | 0 |
| Com_analyze | 0 |
| Com_backup_table | 0 |
| Com_begin | 0 |
| Com_call_procedure | 0 |
| Com_change_db | 1198 |
| Com_change_master | 0 |
| Com_check | 0 |
| Com_checksum | 0 |
| Com_commit | 0 |
| Com_create_db | 0 |
| Com_create_function | 0 |
| Com_create_index | 0 |
| Com_create_table | 0 |
| Com_create_user | 0 |
| Com_dealloc_sql | 0 |
| Com_delete | 27114 |
| Com_delete_multi | 0 |
| Com_do | 0 |
| Com_drop_db | 0 |
| Com_drop_function | 0 |
| Com_drop_index | 0 |
| Com_drop_table | 0 |
| Com_drop_user | 0 |
| Com_execute_sql | 0 |
| Com_flush | 0 |
| Com_grant | 0 |
| Com_ha_close | 0 |
| Com_ha_open | 0 |
| Com_ha_read | 0 |
| Com_help | 0 |
| Com_insert | 99763 |
| Com_insert_select | 0 |
| Com_kill | 0 |
| Com_load | 0 |
| Com_load_master_data | 0 |
| Com_load_master_table | 0 |
| Com_lock_tables | 0 |
| Com_optimize | 0 |
| Com_preload_keys | 0 |
| Com_prepare_sql | 0 |
| Com_purge | 2 |
| Com_purge_before_date | 0 |
| Com_rename_table | 0 |
| Com_repair | 0 |
| Com_replace | 0 |
| Com_replace_select | 0 |
| Com_reset | 0 |
| Com_restore_table | 0 |
| Com_revoke | 0 |
| Com_revoke_all | 0 |
| Com_rollback | 0 |
| Com_savepoint | 0 |
| Com_select | 373665 |
| Com_set_option | 200 |
| Com_show_binlog_events | 0 |
| Com_show_binlogs | 10 |
| Com_show_charsets | 50 |
| Com_show_collations | 50 |
| Com_show_column_types | 0 |
| Com_show_create_db | 0 |
| Com_show_create_table | 0 |
| Com_show_databases | 50 |
| Com_show_errors | 0 |
| Com_show_fields | 117 |
| Com_show_grants | 26 |
| Com_show_innodb_status | 0 |
| Com_show_keys | 4 |
| Com_show_logs | 0 |
| Com_show_master_status | 0 |
| Com_show_ndb_status | 0 |
| Com_show_new_master | 0 |
| Com_show_open_tables | 0 |
| Com_show_privileges | 0 |
| Com_show_processlist | 890 |
| Com_show_slave_hosts | 1 |
| Com_show_slave_status | 0 |
| Com_show_status | 6 |
| Com_show_storage_engines | 0 |
| Com_show_tables | 88 |
| Com_show_triggers | 0 |
| Com_show_variables | 121 |
| Com_show_warnings | 0 |
| Com_slave_start | 0 |
| Com_slave_stop | 0 |
| Com_stmt_close | 0 |
| Com_stmt_execute | 0 |
| Com_stmt_fetch | 0 |
| Com_stmt_prepare | 0 |
| Com_stmt_reset | 0 |
| Com_stmt_send_long_data | 0 |
| Com_truncate | 0 |
| Com_unlock_tables | 0 |
| Com_update | 14309 |
| Com_update_multi | 0 |
| Com_xa_commit | 0 |
| Com_xa_end | 0 |
| Com_xa_prepare | 0 |
| Com_xa_recover | 0 |
| Com_xa_rollback | 0 |
| Com_xa_start | 0 |
| Compression | OFF |
| Connections | 160610 |
| Created_tmp_disk_tables | 7412 |
| Created_tmp_files | 6 |
| Created_tmp_tables | 50219 |
| Delayed_errors | 0 |
| Delayed_insert_threads | 0 |
| Delayed_writes | 0 |
| Flush_commands | 1 |
| Handler_commit | 0 |
| Handler_delete | 23615 |
| Handler_discover | 0 |
| Handler_prepare | 0 |
| Handler_read_first | 10686 |
| Handler_read_key | 214896110 |
| Handler_read_next | 803649651 |
| Handler_read_prev | 0 |
| Handler_read_rnd | 29395913 |
| Handler_read_rnd_next | 2428611387 |
| Handler_rollback | 0 |
| Handler_savepoint | 0 |
| Handler_savepoint_rollback | 0 |
| Handler_update | 194585127 |
| Handler_write | 2609304 |
| Key_blocks_not_flushed | 0 |
| Key_blocks_unused | 286673 |
| Key_blocks_used | 177247 |
| Key_read_requests | 1937819978 |
| Key_reads | 177311 |
| Key_write_requests | 420269 |
| Key_writes | 358754 |
| Last_query_cost | 0.000000 |
| Max_used_connections | 171 |
| Not_flushed_delayed_rows | 0 |
| Open_files | 427 |
| Open_streams | 0 |
| Open_tables | 363 |
| Opened_tables | 369 |
| Prepared_stmt_count | 0 |
| Qcache_free_blocks | 2140 |
| Qcache_free_memory | 58381576 |
| Qcache_hits | 775055 |
| Qcache_inserts | 308550 |
| Qcache_lowmem_prunes | 21210 |
| Qcache_not_cached | 65942 |
| Qcache_queries_in_cache | 2824 |
| Qcache_total_blocks | 7950 |
| Questions | 1453561 |
| Rpl_status | NULL |
| Select_full_join | 5308 |
| Select_full_range_join | 0 |
| Select_range | 69395 |
| Select_range_check | 0 |
| Select_scan | 12000 |
| Slave_open_temp_tables | 0 |
| Slave_retried_transactions | 0 |
| Slave_running | ON |
| Slow_launch_threads | 0 |
| Slow_queries | 3778 |
| Sort_merge_passes | 3 |
| Sort_range | 68112 |
| Sort_rows | 26022916 |
| Sort_scan | 28449 |
| Table_locks_immediate | 554580 |
| Table_locks_waited | 13621 |
| Tc_log_max_pages_used | 0 |
| Tc_log_page_size | 0 |
| Tc_log_page_waits | 0 |
| Threads_cached | 37 |
| Threads_connected | 5 |
| Threads_created | 185 |
| Threads_running | 4 |
| Uptime | 53407 |
| Uptime_since_flush_status | 53407 |
+-----------------------------------+------------+
226 rows in set (0.00 sec)




To be continued... Grüsse,
Olivier

Re: Hardware fuer MySQL Server

am 11.09.2007 09:15:25 von spam-2007-06

Guten Morgen,

Die Suche geht bei mir weiter :-)

Was noch ganz interessant ist: Perfomance ist viel besser auf server "dbtest1" als
auf "db1". OS und my.cnf sind genau gleich (und es braucht nicht mehr als 2GB ram).

Einen schnelleren Dual-Core Xeon wäre also besser als einen Quad-Core Xeon?

Grüsse,
Olivier



db1:

DELL Poweredge 1950
CPU: 1x Intel(R) Xeon(R) CPU E5320 @ 1.86GHz (1863.92-MHz 686-class CPU)
Cores per package: 4
real memory = 2147123200 (2047 MB)
avail memory = 2096128000 (1999 MB)
FreeBSD/SMP: Multiprocessor System Detected: 4 CPUs



dbtest1:

HP DL 360G5
CPU: 1x Intel(R) Xeon(R) CPU 5150 @ 2.66GHz (2666.78-MHz 686-class CPU)
Cores per package: 2
real memory = 3220996096 (3071 MB)
avail memory = 3151097856 (3005 MB)
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs

Re: Hardware fuer MySQL Server

am 11.09.2007 13:47:06 von Sven Paulus

Olivier M. wrote:
> Was noch ganz interessant ist: Perfomance ist viel besser auf server "dbtest1" als
> auf "db1". OS und my.cnf sind genau gleich (und es braucht nicht mehr als 2GB ram).

Mehr Speicher -> mehr Cache fuer OS verfuegbar. Und wie sieht es mit den
Platten aus? Vergleichbar oder unterschiedliches Setup?

Haeufig ist CPU gar nicht mal so wichtig (je nach Query) ...

Re: Hardware fuer MySQL Server

am 11.09.2007 14:53:53 von Christian Schmelzer

Olivier M. wrote:
> Guten Morgen,
>
> Die Suche geht bei mir weiter :-)
>
> Was noch ganz interessant ist: Perfomance ist viel besser auf server
> "dbtest1" als auf "db1". OS und my.cnf sind genau gleich (und es
> braucht nicht mehr als 2GB ram).
>
> Einen schnelleren Dual-Core Xeon wäre also besser als einen Quad-Core
> Xeon?
>

Das hängt davon ab ;-) MySQL kann für eine Query nur einen Core nutzen.
Laufen deine Queries eher sequenziell ab, bringen dir die Kerne nicht viel.
Da ist der Prozessor mit mehr Geschwindigkeit/Kern gefragt. Und dann
natürlich die Frage der Platten und Controller, die beim Plattenzugriff eine
größere Rolle spielen als die CPU. Außerdem hat Server 2 mehr Ram, welches
vom BS noch als Cache genutzt werden kann.

Christian