waldbauer.com
06.12.2006, 12:34
Hallo MySQL Profis !
Ich habe 2 relativ simple Querys die bei mir teilweise extrem lange dauern. Obwohl ich schon an den my.ini Variablen herumgeschruabt habe komme ich einfach nicht auf ein performantes System.
$mails = $DB_site->query("
SELECT *
FROM hive_message AS message
WHERE folderid = $folderid
AND userid = $hiveuser[userid]
ORDER BY $sortby $sortorder
LIMIT ".($limitlower-1).", $perpage
");
Die Datenbank hat insgesamt ca. 20.000 Einträge, wenn ich mitlogge dann erhalte ich folgendes:
Dec 6 2006 12:21:51: User: xxx, SELECT*: 20.7263 sec. #: für 1318 Datensätze
Der betreffende MySQL Server hat 2GB Ram zur verfügung, läuft auf einem P4 3.2Ghz und ist sonst praktisch nicht beschäftigt. Die Datenbank MESSAGE hat etwa 1.5GB.
Die 2te Query ist:
$totalmails = $DB_site->get_field("
SELECT COUNT(*) AS count
FROM hive_message
WHERE ".iif(!isset($findemail), "folderid = $folderid AND ")."userid = $hiveuser[userid]
");
Meine aktuellen my.ini sind:
max_connections=500
interactive_timeout=100
wait_timeout=45
connect_timeout=10
table_cache=400
thread_cache_size=30
thread_concurrency=4
tmp_table_size=128M
max_heap_table_size=16MB
max_allowed_packet=64M
max_connect_errors=10
max_tmp_tables=64
key_buffer=100M
key_buffer_size=220M
record_buffer=6M
join_buffer_size=4M
read_buffer_size=4M
sort_buffer_size=6M
read_rnd_buffer_size=4M
bulk_insert_buffer_size=8M
myisam_block_size=4096
myisam_sort_buffer_size=64M
myisam_max_sort_file_size=100G
myisam_max_extra_sort_file_size=100G
query_cache_type=1
query_cache_limit=4M
query_cache_size= 128M
query_prealloc_size=163840
query_alloc_block_size=32768
default-storage-engine=MyISAM
In der Laufzeit von MySQL habe ich folgenden ROTE Werte:
Slow_queries 7
Handler_read_rnd 96 k
Handler_read_rnd_next 35 k
Created_tmp_disk_tables 10
Key_reads 8.157
Select_full_join 11
Opened_tables 671
Die Schlüssel in der Datenbank sind:
PRIMARY PRIMARY 24826 messageid
name INDEX 8275 name
userid INDEX 23 userid
folderid INDEX 101 folderid
email INDEX 8275 email
subject INDEX 12413 subject
status INDEX 29 status
attach INDEX 29 attach
emailid INDEX 12413 emailid
dateline INDEX 24826 dateline
priority INDEX 3 priority
popsize INDEX 8275 popsize
uniquestr INDEX 1 uniquestr
size INDEX 8275 size
Ich habe 2 relativ simple Querys die bei mir teilweise extrem lange dauern. Obwohl ich schon an den my.ini Variablen herumgeschruabt habe komme ich einfach nicht auf ein performantes System.
$mails = $DB_site->query("
SELECT *
FROM hive_message AS message
WHERE folderid = $folderid
AND userid = $hiveuser[userid]
ORDER BY $sortby $sortorder
LIMIT ".($limitlower-1).", $perpage
");
Die Datenbank hat insgesamt ca. 20.000 Einträge, wenn ich mitlogge dann erhalte ich folgendes:
Dec 6 2006 12:21:51: User: xxx, SELECT*: 20.7263 sec. #: für 1318 Datensätze
Der betreffende MySQL Server hat 2GB Ram zur verfügung, läuft auf einem P4 3.2Ghz und ist sonst praktisch nicht beschäftigt. Die Datenbank MESSAGE hat etwa 1.5GB.
Die 2te Query ist:
$totalmails = $DB_site->get_field("
SELECT COUNT(*) AS count
FROM hive_message
WHERE ".iif(!isset($findemail), "folderid = $folderid AND ")."userid = $hiveuser[userid]
");
Meine aktuellen my.ini sind:
max_connections=500
interactive_timeout=100
wait_timeout=45
connect_timeout=10
table_cache=400
thread_cache_size=30
thread_concurrency=4
tmp_table_size=128M
max_heap_table_size=16MB
max_allowed_packet=64M
max_connect_errors=10
max_tmp_tables=64
key_buffer=100M
key_buffer_size=220M
record_buffer=6M
join_buffer_size=4M
read_buffer_size=4M
sort_buffer_size=6M
read_rnd_buffer_size=4M
bulk_insert_buffer_size=8M
myisam_block_size=4096
myisam_sort_buffer_size=64M
myisam_max_sort_file_size=100G
myisam_max_extra_sort_file_size=100G
query_cache_type=1
query_cache_limit=4M
query_cache_size= 128M
query_prealloc_size=163840
query_alloc_block_size=32768
default-storage-engine=MyISAM
In der Laufzeit von MySQL habe ich folgenden ROTE Werte:
Slow_queries 7
Handler_read_rnd 96 k
Handler_read_rnd_next 35 k
Created_tmp_disk_tables 10
Key_reads 8.157
Select_full_join 11
Opened_tables 671
Die Schlüssel in der Datenbank sind:
PRIMARY PRIMARY 24826 messageid
name INDEX 8275 name
userid INDEX 23 userid
folderid INDEX 101 folderid
email INDEX 8275 email
subject INDEX 12413 subject
status INDEX 29 status
attach INDEX 29 attach
emailid INDEX 12413 emailid
dateline INDEX 24826 dateline
priority INDEX 3 priority
popsize INDEX 8275 popsize
uniquestr INDEX 1 uniquestr
size INDEX 8275 size