Etikettarkiv: MySQL

Full-text sökningar med Sphinx Search

När MySQL inte räcker till för full-textsökningar eller fritextsökningar som det också kallas så brukar jag använda Sphinx, eller faktum är att jag använder Sphinx till alla typer av sökningar där inte MySQL pallar med vilket händer rätt ofta nuförtiden vilket gör att Sphinx finns med i mer eller mindre alla mina projekt.

Här kommer en kort presentation om hur du kommer igång med Sphinx:

NoSQL – MySQL och memcached på väg bort

Jag ser fler och fler välja alternativa lösningar till MySQL och memcached och väljer då istället exempelvis Redis eller Cassandra. Ryan King som jobbar på Twitter intervjuades nyligen och berättade att de håller på att gå över till Cassandra för att lagra deras ofantliga mängder med tweets.

Som jag har skrivit tidigare så använder jag Redis för alla mina nya projekt men ser även till att ha en kopia kvar i MySQL för att Sphinx skall indexera fritext. Men jag kommer förmodligen att skippa MySQL helt snart eftersom Sphinx även kan läsa in exempelvis fritext från XML som kan genereras från innehållet i Redis.

När jag startar mitt nästa projekt så kommer jag att skippa MySQL och memcache helt och försöka att bygga en lösning som enbart förlitar sig på Redis (och Sphinx så klart).

Kategorisering av de olika lagringstyperna:

  • Key-value stores: Redis, Scalaris, Voldmort, and Riak.
  • Document stores: Couch DB, MongoDB, and SimpleDB.
  • Record stores: BigTable, HBase, HyperTable, and Cassandra.
  • Scalable RDBMSs: MySQL Cluster, ScaleDB, Drizzle, and VoltDB.

Glöm inte läsa denna rapport som nyss släpptes på ämnet:

High Performance Scalable Data Stores av Rick Cattell

NoSQL here we come.

Logga många klick

Jag gillar att klura på problem, speciellt när jag kan klura länge och väl. Det är så att jag har ett nytt projekt där jag avser att logga många klick i sekunden och av erfarenhet tidigare då jag utvecklat bl.a BloggVärde så vet jag att det inte är direkt så lätt som det låter.

Att uppdatera i MySQL med UPDATE eller dylikt är en på tok för dyrbar process så därför har jag nu klurat fram en lösning som troligtvis är bättre:

Jo, det är så att memcache har stöd för increment samt så går det att köra memcached processen med -M flaggan som ser till att inget åker ut, dock så är det då upp till dig själv att se till att du inte överskrider minnet du allokerar till memcached.

Sen så ser jag bara till att kontrollera vad värdet är ungefär var femte minut och skriver ner det till MySQL-databasen samt rensar värdet.

Smart va? Hoppas det funkar i praktiken..

Att skriva bra kod

På senare tid så lägger jag mer tid och kraft till att skriva bra (snygg) och snabb kod. Att optimera sin PHP-kod kan spara många millisekunder i exekveringen. Vad pratar jag om då? Jo det finns några bra tips:

Kolla igenom all din kod med xdebug för att hitta långsamma exekveringar/funktioner. Och använd med fördel memcached, Sphinx och eAccelerator. Kasta bort Apache och titta istället på nginx och lighttpd. Jag har tidigare skrivit om hur du optimerar MySQL.

Det lönar sig att göra rätt från början!

Felsökning Apache

En av mina servrar börjar gå på knäna och antalet Apache-processer låg runt 200 stycken vilket är det maxtak jag definerat med ”RLimitNPROC 200 200” i config-filen för Apache.

Jag började min felsökning  och som vanligt så undersökte jag MySQL-datbasen vad det kan vara som kan gå långsamt men hittade inget där (show processlist samt mysql-slow.log).

Men efter lite tips från Webmasters Network så la jag till ExtendedStatus On och där uppenbarade det sig vilken virtuell host som tog all kapacitet och vilket script.

Så jag la till en ”LIMIT 1” i slutet på en SQL-update och la en bild på ett CDN som ofta hämtades och vips så sjönk antelet Apache-processer till enbart 50 stycken:

Total accesses: 28353 – Total Traffic: 137.8 MB
CPU Usage: u6.84 s1.18 cu.39 cs0 – .249% CPU load
8.39 requests/sec – 41.7 kB/second – 5095 B/request
45 requests currently being processed, 7 idle workers

Jobbr, WiFiKartan, Sphinx, Twittapps samt Bisongoogle

Fredrik Wass som bloggar på bisonblog testade att använda Jaiku för att få in frågor till en intervju med Google-Sveriges Stina Honkamaa samt Nicklas Lundblad. Läste även idag att Expressens tidningsupplaga refererat till denna (samt online här).

**

Skaparen av Sphinx, Andrew Aksyonoff höll en presentation på MySQL UC 2008:

**

Ted Valentin fortsätter att leverera intressanta sajter och senast ut i *kartan.se är WiFiKartan.se som listar fik för Internet-nomader. Hittade denna roliga recension om nördcaféet #1, il café

– Nån tittade in i inre rummet och konstaterade: ´Jaha, det var här Dreamhack hålls´

**

Jobbr.se är en ny jobbsajt för IT-relaterade jobb skapad av Skellefteåkillen Kristoffer Lidman. Snygg sajt som vanligt när Kristoffer är i farten.

**

Jag köper fler domäner och denna gång är det uhack.com, siteguard.com samt oddpay.com

**

Twingly-Anton gästbloggar på ReadWriteWeb om de populäraste Twitter app’sen vilket tydligen är Twhirl.

**

Ett kul tidsfördriv är att köra runt på Google Maps gator med googleDrive.

**

Google Safe Browsing har nu öppnats upp mer och nu är det möjligt att kontrollera om godtycklig webbsajt innehåller skadlig kod eller ej, den magiska URL:en är:

Populäraste inläggen

Till Er nya bloggläsare och gamla rävar så tänkte jag skriva en liten lista över de inlägg som är populärast här på bloggen:

Och av någon anledning så är sidan ”Om mig” mycket populär.

Gratis affärsidé: Webbtjänst som optimerar din databas

Många programmerare eller administratörer stöter förr eller senare problem med sin databas då denna blir överbelastad av en eller annan anledning.

Vad denna överbelastning kan bero på finns det många svar på (några har jag skrivit om tidigare). Men vad jag tror skulle behövas är en tjänst som man kan använda över webben som ansluter till en MySQL/Postgres-databas och kan ställa ett antal SQL-frågor, analysera tabeller samt monitorera SQL-frågor under några dagar för att sedan ge ett kvalificerat svar (rapport) på hur man kan optimera sin databas.

Nu har jag ju inte lagt ner så mycket efterforskningar för att se om det finns en sådan tjänst. Förmodligen finns det program som man kan använda i dagsläget för att optimera sin databas men inget som inte kräver installation och fungerar över Internet.