MYSQL: Kako struktuirati tabele vezano za broj prikaza nekog teksta na stranici?
Zdravo svima.
Recimo da imam tabelu 'tekstovi' Kôd:
TEKSTOVI Kôd:
UPDATE tekstovi SET broj_prikaza = broj_prikaza+1 WHERE id = 344363; Znam da je ovaj upit jako jednostavan i brz (pise u mysql dokumentaciji), ali ce se oni izvrsavati kod svakog prikaza oglasa. Problem je sljedeci: Kao sto znamo kada se radi UPDATE nad nekom tabelom ta tabela ce biti lockovana i svi SELECT upiti ce biti na cekanju, a radi se o glavnoj tabeli koja ce se korstiti u svakom upitu. Takodjer, koliko znam bilo kakav update nad nekom tabelom će poremetiti interni mysql cache, tako da i tu postoje određeni gubici. A stranica bi trebala da bude jako posjećena. Ja sam razmisljao da se napravi dodatna tabela 'prikazi': Kôd:
PRIKAZI Pretpostavljam da JOIN ove dvije tabele ne dolazi kao rješenje (sa ciljem da se izbjegne CRON job), jer bi i tada se pojavljivali 'isti problemi', a plus bi imli dodatno spajanje tabela. Da li moja razmisljanja su ispravna i kakva su vaša iskustva sa ovim o čemu trenutno pišem? Hvala unaprijed na učešću u temi. Pozz, mb |
Verovatno su ti tabele u MyISAM formatu, probaj InnoDB - on ne lockuje celu tabelu.
|
Da, u pravu si. Ne bih o ovome ni razmisljao da mi nije potrebna podrska za Full-text search indexes, jer kao sto i sam znas InnoDB nema podrsku za pomenutu opciju.
Pozzz |
Ja ovde vidim kontradiktornost - kazes da ti UPDATE pravi problem, a sa druge strane, FullText search nije problematican (jer i on ume da "zakoci" tabelu)?
Btw, koliko uopste ima tekstova? |
Iskren da budem, nisam znao da Full Text zakljuca tabelu! On bi se rjeđe korstio, jer bi zapravo preko njega rijesio pretragu/pretrazivanje po kljucnoj rjeci.
Vremenom bi trebalo da bude i do 100.000 aktivnih tekstova (ne bi bili veliki, do 700 karaktera) u bazi. |
Da sam na tvom mestu, ja bih sve konvertovao u InnoDB, i cron scriptom (koja bi se izvrsavala nocu tj. u periodu najmanje posete) updatovao broj pageviews.
I uveo drugi mehanizam za pretragu tekstova (sphinx?). A razmislio bih i o keshiranju stranica, da ne mora svaki put da se vuce iz baze. |
Vidi, nemam ja trenutno problem koji sam gore naveo. VJeorvano sam konfuzno napisao.
Tek treba da napravim pomenuti pageviews, pa razmislajm kako da najbolje izvedem, kako ne bi bilo problema. Mozgajuci, dosao sam do pomenutih MOGUCIH problema uz vezi lockovanja i cimanja intrenog mysql cache-a. VJeorvno cu uraditi sa innodb i dodatanom tabelom. Sto se tice sphinx-a, cuo sam i ranije za njega, ali mi se nije svidjela 'ideja da ja moram voditi racuna' od indexiranju. Mjedutim, malo detaljnije sam se upozano sa njim i vidim da ga hvale, a mozda mi i pomogne oko nekih non-full text upita. Da, Cache_Lite ce odraditi posao na nekim mjestima, gdje lifetime cache moze da traje i po 60min, što je odlicno. Hvala ti na izdvojenom vremenu. |
Vreme je GMT +2. Trenutno vreme je 21:04. |
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.