Toon posts:

[MySQL] Traaaaaaaaaaaaaaaaaaaaaaag!!

Pagina: 1
Acties:
  • 61 views sinds 30-01-2008

Verwijderd

Topicstarter
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:
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:
1
SELECT * FROM quarantine WHERE TO LIKE '%dignus.nl%';
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.
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 ]


Verwijderd

heb je een index (gewone, fulltext, ...) op kolom to? Je weet toch dat je index uit KEY `id_2` (`id`,`timestamp`,`to`) alleen gebruikt wordt als je ofwel alleen zoekt op id, ofwel op id, timestamp en to?

[ Voor 67% gewijzigd door Verwijderd op 30-12-2004 16:05 ]


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

De index heeft geen zin voor die query, like '%waarde%' levert sowieso een full table scan.

Who is John Galt?


  • spone
  • Registratie: Mei 2002
  • Niet online
Heb niet bijster veel verstand van de techniek achter mysql, maar je weet dat LIKE toch een knap zware query is? En zeker op een database van bijna 800mb.

Game: i5-14600K, 32GB DDR5-6000, RTX 5070 Ti; Laptop: MacBook Pro M1 Pro 14" 16/512; Server: R9-7950X, 96GB DDR5-5600; Woonkamer: Mac Mini M4 16/256


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:45

gorgi_19

Kruimeltjes zijn weer op :9

Neem eens een normale titel :/

En Like is killing op deze manier; geen enkele index kan gebruikt worden. FullText is hier een oplossing waarin je moet kijken.

[ Voor 69% gewijzigd door gorgi_19 op 30-12-2004 16:05 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Dit topic is gesloten.