Hallo mensen,
ik zit eventjes te kijken naar de performance van mijn database. Het gaat om een PostgreSQL database dat een radiuslog bijhoud.
De database:
De SQL code moet er nu voor zorgen dat er een mooi overzichtje gedraaid gaat worden voor de groepen, per gebruiker, per nummer en dan per dag. Real-time dus.
Met een gewone
is de db al een seconde of 3 bezig.
De indices die ik nu op de tabellen heb aangelegd zijn:
Een maandoverzicht voor alle groepen met alle gebruikers, per nummer duurt al 23,8 seconden. Om nog maar niet te spreken over een specificatie per dag: 61,3 seconden.
De SQL code bestaat uit een MAX(), een COUNT(), een AVG() en een SUM() functie die uitgegroepeerd wordt naar nummer, met beperkingen in de datums (data is zo verwarrend
).
Naar mijn idee duurt dit veeeel te lang. Met goede indices lijkt mij dat een dergelijk overzicht er in een seconde of 5 moet staan...
De hardware:
Iemand suggesties over het aanleggen van andere indices? Of over andere oplossingen?
ik zit eventjes te kijken naar de performance van mijn database. Het gaat om een PostgreSQL database dat een radiuslog bijhoud.
De database:
code:
1
2
3
4
5
6
7
8
| radius=> \dt
List of relations
Name | Type | Owner
------------+-------+--------
gebruikers | table | radius
groepen | table | radius
nummers | table | radius
radacct | table | radius |
De SQL code moet er nu voor zorgen dat er een mooi overzichtje gedraaid gaat worden voor de groepen, per gebruiker, per nummer en dan per dag. Real-time dus.
Met een gewone
code:
1
| select count(*) from radacct |
is de db al een seconde of 3 bezig.
De indices die ik nu op de tabellen heb aangelegd zijn:
code:
1
2
3
4
5
6
7
8
9
10
11
12
| List of relations
Name | Type | Owner
-------------------------+-------+--------
gebruiker_id | index | radius
gebruikers_pkey | index | radius
groep_id | index | radius
groepen_pkey | index | radius
nummer_mapped | index | radius
nummers_pkey | index | radius
radacct_calledstationid | index | radius
radacct_pkey | index | radius
radacct_test | index | radius |
Een maandoverzicht voor alle groepen met alle gebruikers, per nummer duurt al 23,8 seconden. Om nog maar niet te spreken over een specificatie per dag: 61,3 seconden.
De SQL code bestaat uit een MAX(), een COUNT(), een AVG() en een SUM() functie die uitgegroepeerd wordt naar nummer, met beperkingen in de datums (data is zo verwarrend
Naar mijn idee duurt dit veeeel te lang. Met goede indices lijkt mij dat een dergelijk overzicht er in een seconde of 5 moet staan...
De hardware:
code:
1
2
3
4
5
| Dual Intel P3 933 op een intel OR840 moederbord 512 RDRAM U160 SCSI disks slackware 8.1, kernel 2.4.19 PostgreSQL: 7.2.2. |
Iemand suggesties over het aanleggen van andere indices? Of over andere oplossingen?
[ Voor 0% gewijzigd door Verwijderd op 23-09-2002 12:08 . Reden: hardware/software config toegevoegd ]