WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Optimering av mysqldatabas (https://www.wn.se/forum/showthread.php?t=1042838)

Clarence 2010-07-19 17:17

Citat:

Ursprungligen postat av studiox (Inlägg 20362886)
hur stora är tabellerna du söker i? 100 miljoner artiklar och en sökning tar 1ms är inte realistiskt imho :)

Jag misstänker att han menar 1 sekund. Testar jag sphinx mot ett index med 25M rader på ca 6GB på en server som är allt annat än välmående (och redan innan ganska slö) så rör det sig om svarstider på ~1s på en fritextsökning med ett gäng tusen träffar. Saker såsom prefix/infix-indexering, ordlängd, antal träffar osv spelar dock in rätt mycket.

dAEk 2010-07-22 23:09

Det var år sedan jag rörde MySQL men minns jag inte helt fel kan man använda kommandot "explain" för att låta motorn analysera frågornas execution plan. Med hjälp av execution plans kan man hitta flaskhalsarna även om man inte har så mycket data i databasen.

terbon 2010-08-17 00:29

En del optimering kan ju göras med hjälp av normalisera databasen med exempelvis metoder såsom BCNF och 4NF. Då kan du inkludera att skriva upp ER-diagram, samt functional dependencies.

Dock så snackar vi i detta fallet inte direkt om en 10 tabellers databas.

dAEk 2010-08-20 20:00

Drygt en månad senare... hur gick det?
Fick du nån nytta av alla svaren?

Conny Westh 2010-08-20 22:43

Citat:

Ursprungligen postat av -Joel- (Inlägg 20361873)
Hej alla WN-are! Jag har hängt på forumet under rätt lång tid, och läst mycket intressant. Tack för alla tips!

Nu har jag en fråga. Hittills har jag bara gjort några mindre projekt som inte blivit så mycket med. Nu har jag börjat med ett (förhoppningsvis) större projekt, och jag har lite funderingar kring optimering av databasen:

Databasen innehåller en tabell över några tusen rader, som förändras. Över dessa "produkter" ska det köras fritextsökningar, som ska kunna hitta träffar mitt inne i "produktnamnen". Det är batchjobb med många sökord, tio- kanske hundratusentals. Sökorden är kopplade till användare, och jag misstänker att det kommer att finnas väldigt mycket dubbletter bland sökorden.

Nu till min fråga: är det värt att separera sökningarna från användarna för att slippa köra identiska sökningar? Då måste det till en extra tabell som kopplar ihop sökningarna med varje användare, med massa extra joins som följd. Dessutom ökar det komplexiteten i utvecklingen.

Kortfattat undrar jag alltså om fritextsökningar som letar genom hela strängen är så tidsödande att det motiverar en ökad komplexitet och tidsåtgång med en extra "jointabell"?

Tack på förhand!

Ps. Tips var jag kan hitta bra information om databaser mottages tacksamt.

Hur ser tabellstrukturen (datamodellen) ut så blir det lättare att se. Berätta gärna vad du lagrar i tabellen för fritextsökning och vad du vill åstadkomma. Det är många gånger helt avgörande för hur man bygger en skalbar lösning.


Alla tider är GMT +2. Klockan är nu 09:54.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson