• Početna
  • O nama
  • LimundoGrad
  • Limundo
  • Kupindo
  • Sigurnost
  • IT
  • Zabava i učenje
  • Plaćanje
  • API
LimundoGrad blog
  • Početna
  • O nama
  • LimundoGrad
  • Limundo
  • Kupindo
  • Sigurnost
  • IT
  • Zabava i učenje
  • Plaćanje
  • API
Home  /  IT  /  Iz naše kuhinje: Baze podataka

Iz naše kuhinje: Baze podataka

Autor:Nikola Krgović
25. октобра 2012. IT profi, saveti 4 komentara

Svi vole da pričaju o tome kako preduzeća treba da budu “društveno odgovorna”. Uvek sam nekako bežao od te priče i trudio se da pređem pravo na dela – a jedan od najboljih načina je nešto što ovde volimo da zovemo “deljenje znanja”. IT kuća, a posebno ona koja živi od svojih korisnika, ima makar moralnu obavezu da bar deo saznanja o funkcionisanju sistema podeli sa svojim korisnicima, kao i sa celim svetom. To možda nije nešto što direktno pomaže većini korisnika, ali pomaže onima koji su u struci, a dodatno, takvim širenjem znanja pomaže stvaranju naprednijeg društva. Možda od toga nema nikakve direktne koristi, ali pomaže u stvaranju boljeg sveta za sve nas i za našu decu.

Kako se kolege na Limundo blogu već bave savetima u vezi sa PHP programiranjem, rešio sam da napišem lep “kuvar” o tome kako mi koristimo bazu podataka. Šta, kako i zašto radimo i šta je od toga korisno za sve. Moja omiljeno rešenje za serverski OS je CentOS Linux, a izbor baze je Percona. Razlog? Za razliku od standardnog (GA) MySQL-a koji Oracle deli besplatno, Percona XtraDB bolje skalira. Kada danas kupite (ili iznajmite) server na kome ćete držati bazu, on ima bar šest, a često i mnogo više jezgara. Na ovakvim platformama je InnoDB jedini razuman izbor, jer stari MyISAM engine još uvek nije u stanju da radi paralelno, tako da, ako još niste prešli – krajnje vam je vreme.

Kad smo već kod jezgara, način na koji je Linux kernel optimizovan nije najsrećniji kada se radi o radu samo jedne aplikacije. Kada je memorija na računaru podeljena između procesora, kao što jeste na svim modernim računarima (tzv. ccNUMA arhitektura), Linux pokušava da svaku aplikaciju zadrži na jednom delu memorije – i time na jednom procesoru. To, kada zamolite Linux da vam opiše izgled memorije, izgleda ovako:

# numactl –hardware
available: 2 nodes (0-1)
node 0 cpus: 0 1 2 3 4 5 12 13 14 15 16 17
node 0 size: 49124 MB
node 0 free: 47241 MB
node 1 cpus: 6 7 8 9 10 11 18 19 20 21 22 23
node 1 size: 49152 MB
node 1 free: 47311 MB
node distances:
node 0 1
0: 10 20
1: 20 10

Iako ovo ima smisla kada pokrećete više aplikacije u okruženju kada koristite samo jednu aplikaciju (bazu), dolazite do situacije da umesto da se sva memorija koristi za bazu, računar će ostaviti pola memorije slobodno, a softver koji radi na drugoj polovini će otići u swap – sve pokušavajući da izbegne pristupanje memoriji sa drugog procesora. Ovo se da rešiti na par načina, a po meni je najelegantniji onaj koji izbegava menjanje samog koda baze. Samo napravite jednu dodatnu skriptu, koja izgleda ovako:

#!/bin/sh

numactl=/usr/bin/numactl
mysqld=/usr/local/mysql/bin/mysqld

exec $numactl –interleave all $mysqld “$@”

I dodajte je ovako u my.cnf fajl:

[mysqld_safe]

ledir=/usr/local/bin
mysqld=mysqld_using_numactl

Rezultat će biti jednostavan – kernel će aplikaciji davati memoriju sa oba procesora ravnomerno, ujedno raspoređujući rad aplikacije između oba procesora.

Dodatno, kad ste lepo optimizovali rad sa memorijom – potrošite je. Na modernoj bazi, koja ima samo InnoDB tabele, slobodno stavite oko 80% memorije u InnoDB buffer pool. Ovo će doneti najveće ubrzanje u radu sa bazom, a radi se dosta lako – na računaru gore to izgleda ovako:

innodb_buffer_pool_size = 80G

Na kraju – rad sa diskom. Prva preporuka je da particija na kojoj je MySQL datadir bude obavezno pod xfs fajl sistemom. Dodatno, pre svega zbog lakšeg recovery procesa, ako vam neka tabela bude oštećena, podelite tablespace po tabelama baze, tako da svaka tabela ima svoj fajl. Konačno, koristite Direct I/O kao metodu flush-ovanja na disk, pre svega zbog pouzdanosti rada. Za to su vam potrebna još ova dva reda u my.cnf fajlu:

innodb_file_per_table

innodb_flush_method = O_DIRECT

Zajedno, ovih par kratkih optimizacija daje brži i pouzdaniji rad baze. Ubrzanja mogu biti dosta primetna u zavisnosti od toga kako ste pre toga radili, ali u svakom slučaju ovo su neke osnove koje ne bi trebalo da preskočite.

Podeli tekst
Share on Facebook
Share on Twitter
Share on Whatsapp
 Prethodni post 14 saveta kako pripremiti auto za zimu
Sledeći post   PHP Preporuke Petkom – Decimalni brojevi u MySQL bazi

Povezani postovi

  • Dobro informisani = bolje zaštićeni! Kako do sigurne kupovine?

    15. марта 2024.
  • 5 predmeta koji će vam olakšati pripremanje trpeze

    6. јануара 2021.
  • Pomoć u odabiru prave knjige za poklon

    10. новембра 2020.

komentara

  1. elemirac
    26. октобра 2012. at 00:08

    super, sad mogu da napravim moju verziju Kupinda 🙂

  2. fofa
    27. октобра 2012. at 01:23

    chlanak od srca…..

  3. Expo
    25. новембра 2012. at 03:05

    Stvarno je lepo videti da jedan od vodecih sajtova za prodaju na balkanu trudi se i objavljuje ovako edukativno tekstove.

  4. Sportmanija
    7. фебруара 2013. at 12:34

    Očigledne su prednosti upotrebe Linuxa, mada i mySql nije loše rešenje za prosečne korisnike.

Advertisement

Popularno na Kupindu

U potrazi ste za udžbenicima za osnovnu ili srednju školu? Pogledajte na Kupindu:

➡️ Udžbenici za osnovnu školu
➡️ Udžbenici za srednju školu

Ovde ćete pronaći udžbenike za svaki razred i izdanja gotovo svih izdavača koje današnje škole traže. Uštedite na kupovini udžbenika.

  • Najpopularnije
  • Poslednji postovi
  • Za sledećih 15 Vladimir Nikolić 22. маја 2021. Limundo 607
  • Hoću da znam šta je neko kupio i prodao Vladan Jović 16. децембра 2013. LimundoGrad 355
  • Kako da ocenim prodavca (a da to bude ispravno)? Ana Mladenović 12. марта 2013. LimundoGrad 248
  • Veštačko nuđenje – istine i laži Vladan Jović 11. јуна 2013. Limundo 234
  • Cenovnik + opcije + brzina Aleksandra Vuković 15. марта 2012. Blog 211
  • Dani ploča na Kupindu: Vinil ne izlazi iz mode! Dunja Stojković 13. марта 2025. Kupindo
  • Top 10 predmeta sa Limunda i Kupinda u 2024. godini! Dunja Stojković 31. децембра 2024. LimundoGrad
  • Digital Awards 2024: Limundo osvojio nagradu za najbolju radijsku kampanju! Dunja Stojković 30. септембра 2024. LimundoGrad
  • Polovna odeća kao znak stila: 10 vrhunskih modnih brendova koje nećete naći u tržnom centru Ivana Lučić 26. августа 2024. LimundoGrad
  • Uživanje u letnjem danu – detalji koji čine baštu posebnom Dunja Stojković 1. августа 2024. Zabava i učenje

Skorašnji komentari

  • Jovana Milenković Arizanović на Tri najjeftinija načina za slanje paketa u LimundoGradu
  • Marija Protic на Tri najjeftinija načina za slanje paketa u LimundoGradu
  • Jovana Milenković Arizanović на Tri najjeftinija načina za slanje paketa u LimundoGradu
  • janoš на Tri najjeftinija načina za slanje paketa u LimundoGradu
  • janoš на Tri najjeftinija načina za slanje paketa u LimundoGradu

Vremeplov

© 2008. LimundoGrad d.o.o. Creative Commons License Ovo delo je licencirano pod uslovima licence Creative Commons Autorstvo-Nekomercijalno-Bez prerada 4.0 Međunarodna licenca
LimundoGrad koristi kolačiće u statističke i marketinške svrhe. Nastavkom korišćenja sajta smatramo da ste pristali na upotrebu kolačića.OKViše informacija