Mogguh,
m'n MySQL setup is nogal traaag. Ik snap alleen niet wwaarom. Eerst wat info:
Hardware:
- 2 x AMD Athlon MP 2600+
- 1 GB DDR
Software:
- FreeBSD 5.3
- MySQL 4.0.22
Database (is maar 1 table):
- 133.000 records
- 780 MB groot
- INNO DB
- Index: 8.7 MB
my.cnf:
Database layout:
In deze tabel wordt e-mail opgeslagen. Na het extracten van de To: en Subject: headers, wordt de volledige inhoud van de e-mail in de column content gegooid.
Indexen staan zoals je ziet op id, timestamp & subject. Dat zijn ook de velden waarop ik SELECT queries wil gaan doen.
Nu.. een simpele query:
Als ik ditzelfde zou doen voor een domein wat minimaal 1000 keer voorkomt in de db, dan krijg ik zelfs "Lost MySQL server".
Indexen zijn al opnieuw aangemaakt, MySQL al opnieuw gestart, databasedump gemaakt en opnieuw in MySQL gezet.. niks helpt. Mis ik nou ergens iets?
m'n MySQL setup is nogal traaag. Ik snap alleen niet wwaarom. Eerst wat info:
Hardware:
- 2 x AMD Athlon MP 2600+
- 1 GB DDR
Software:
- FreeBSD 5.3
- MySQL 4.0.22
Database (is maar 1 table):
- 133.000 records
- 780 MB groot
- INNO DB
- Index: 8.7 MB
my.cnf:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| [mysqld] key_buffer = 16M max_allowed_packet = 1M thread_stack = 128K tmp_table_size = 256M key_buffer = 16M max_allowed_packet = 1M thread_stack = 128K max_connections = 3000 myisam_sort_buffer_size = 64M join_buffer_size = 2M read_buffer_size = 4M sort_buffer_size = 4M table_cache = 8192 thread_cache_size = 128 wait_timeout = 3600 connect_timeout = 10 max_allowed_packet = 16M max_connect_errors = 100 query_cache_limit = 2M query_cache_size = 64M query_cache_type = 1 skip-symbolic-links |
Database layout:
code:
1
2
3
4
5
6
7
8
9
| CREATE TABLE `quarantine` ( `id` bigint(20) NOT NULL auto_increment, `timestamp` bigint(20) NOT NULL default '0', `to` varchar(255) NOT NULL default '', `subject` varchar(255) NOT NULL default '', `content` mediumtext NOT NULL, UNIQUE KEY `id` (`id`), KEY `id_2` (`id`,`timestamp`,`to`) ) TYPE=InnoDB; |
In deze tabel wordt e-mail opgeslagen. Na het extracten van de To: en Subject: headers, wordt de volledige inhoud van de e-mail in de column content gegooid.
Indexen staan zoals je ziet op id, timestamp & subject. Dat zijn ook de velden waarop ik SELECT queries wil gaan doen.
Nu.. een simpele query:
code:
Dit kost me zo'n 20 seconden voor 36 results. Gedurende deze tijd, zie ik de CPU load niet omhoog knallen, max 0.60. Wel zie ik MySQL naar ruim 20% vliegen.1
| SELECT * FROM quarantine WHERE TO LIKE '%dignus.nl%'; |
Als ik ditzelfde zou doen voor een domein wat minimaal 1000 keer voorkomt in de db, dan krijg ik zelfs "Lost MySQL server".
Indexen zijn al opnieuw aangemaakt, MySQL al opnieuw gestart, databasedump gemaakt en opnieuw in MySQL gezet.. niks helpt. Mis ik nou ergens iets?
[ Voor 22% gewijzigd door Verwijderd op 30-12-2004 16:04 ]