Primarni kljuc mi je kompozitni friend_id1,friend_id2.
Dugo sam se dvoumio da li bi ikakvu korist dobio ako bih stavio kljuc i na friend_id1 jer se u where/joinima uglavnom ova kolona pojavljuje. Ako sam te dobro razumeo, moj pristup je ispravan, jel tako?
ne treba ti zaseban index na friend_id1 posto bi bio redundandan, samo bi usporavao insert/updata/delete a nista ne bi znacio pri select-u
Takodje(ovako iz prve ruke da mi odgovoris ako mozes), u kolikoj meri je insert/update/select nad myISAM tabelama brze u odnosu na InnoDB engine?
sorry ali odgovor je ZAVISI :D
ako imas samo insert i nista vise, i to, bulk insert iz jednog treda ... myisam rulez :D brzi je ~3 puta od innodb-a
sve ostalo je "zavisi" ... myisam radi table lock a innodb radi row lock (u stvari page lock ali aj da ne idemo u crevca) sto znaci da teoretski 10 tredova mogu istovremeno da menjaju 10 razlicitih podataka ako koristis innodb a za myisam moraju jedan po jedan, posto myisam lepo zakljuca celu tabelu da bi dodao/promenio/obrisao jedan slog. tako da je u tom slucaju innodb brzi ..
za select .. zavisi .. select iz jedne tabele koja je dobro indexirana je nesto brzi sa myisam-om ali tu opet ima razlike kako je setovan server ... kada je join u pitanju sve zavisi ....
Isto tako sam primetio da na vecini hostinga na kojima sam hostovao svoje web aplikacije InnoDB nije dobro podesen, pa se precesto desavalo pucanje(a uz to nisam znao tad za sve prednosti MySQLi - tipa automatski rollback transakcija i u slucaju pucanja skripte na nepredvidjenom delu - pre rollbacka...da napomenem - ako nije jasno, pricam o PHP) .
mnogi hosting provajderi su poceli da se bave hostingom sa par masina i pozajmljenim / ukradenim linkom.... stede na svemu, ponajvise na skupim/kvalitetnim inzenjerima tako da je u 99% slucajeva to problem ...
sa druge strane, ni mysql ni ostali open source db sistemi koje oni nude nisu bas optimizovani da ih koriste hosting provajderi ... mysql ne podrzava kvote po bazi tako da hosting provajderi idu i koriste trikove limitirajuci te sa kvotama na filesistemu (sto u slucaju povelike temp tabele ili prerastanja tvoje tabele zabada mysql jel mu filesistem uskrati dobrodoslicu - sto zabode CEO mysql a ne samo usera koji je napravio sr**e ...) ... neki pribegavaju skriptama koje "mere" velicinu pa ti zabodu usera kad ti baza predje kvotu i slicno ... isto tako ... ti ako na jednom serveru hostujes 10 baza, 1 user koji ima pristup jednoj bazi moze da "zauzme" ceo server ... tj da uzme sve resurse i da ostali useri mogu da pevaju ... sa prosecno nekoliko hiljada baza na hosting serveru to je prilicno veliki problem .... tako da hosting provajderi pribegavaju i tu trikovima i resetuju db server / zabadaju konekcije ako nesto "predugo traje" .. da ne spominjem opet da to uglavnom rade polupismeni ameri sa 2 nedelje kursa ili indijci koji su prepisivali na testu tako da je sve to u startu konfigurisano nogama :(
Da li mi mozes dati neke inside informacije o cemu(kojim varijablama) da vodim racuna prilikom podesavanja mysql-a za InnoDB? Posto sada imam pristup svom serveru(tj nije bas moj, ali duga je to prica :) ). Da napomenem, recimo da mi je neki optimum da sajt radi normalno tako sto sam stavio 500 konekcija(mada cu verovatno morati vise) ka bazi u jednom trenutku. Dok je bilo na default podesavanjima(mislim da je oko 100 konekcija), ponestajalo je konekcija svakih par sekundi kad navale useri+botovi :)
:D :D :D
za botove imas da podesis u robots.txt koliko zelis da smaraju ... za ostala setovanja svog servera pogledaj temu namenjenu tome:
http://www.elitesecurity.org/t357167-Optimizacija-mySQL-servera
ili moj blog sa slicnim (malo drugacije organizovanim) informacijama: http://mysql.crsndoo.com/wp/2009/03/optimizacija-mysql-servera/
sto se php-a tice ... mysqli je mnogo bolji interface, ne znam koliko je stabilan ja ga licno nisam mnogo koristio (mozda 10tak malih projekata) ..
trebalo bi da je http://dev.mysql.com/downloads/connector/php-mysqlnd/ bolji od svih njih, ako ne "laksi" onda bar "Brzi" ali ja ga u zivotu nisam probao tako da .. tj http://dev.mysql.com/downloads/connector/php-mysqlnd/ je zamena za low level mysql drajver na php-u .. on bi trebalo da "poboljsa" rad sa mysqli-em .. ali .. "nikad probao" ..