• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Petras Bieliauskas
 

Petras Bieliauskas

on

  • 1,097 views

 

Statistics

Views

Total Views
1,097
Views on SlideShare
1,097
Embed Views
0

Actions

Likes
0
Downloads
4
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Petras Bieliauskas Petras Bieliauskas Presentation Transcript

    • MySQL panaudojimas didelės apimties sistemose Petras Bieliauskas (petras @ito.lt)
    • Eskimi mobilus socialinis tinklas
      • 1 mln. narių
      • 10mln. “pageviews” per dieną. 30 0 mln. per mėnesį
      • 18 000 narių online
      95 mln. pageview per mėnesį 12 000 60 000
    • Eskimi architektūra
      • php
      • Memcached
      • 2 www serveriai
      • Duomenų bazė :
        • MySQL
        • ~50GB;
        • ~300 mln. į rašų;
        • M-S replikavimas
        • 2000 užklausų per sekundę;
    • Sistemos optimizavimo terminai
      • Vykdymo charakteristika (angl. Performance)
        • vykdymo trukmė (angl. response time)
        • pralaidumas (angl. throughput)
      • Išpl e čiamumas (angl. Scalability)
        • Į aukštį (angl. scaling up)
        • Į plotį (angl. scaling out)
      • Efektyvumas (angl. Efficiency)
    • Architektūrinės klaidos
      • “ hardcodinti” duom enų bazių pavadinimai;
      • Nėra galimybės(sudėtinga) nukreipti SELECT užklausas į kitą serverį;
      • Nėra galimybės perimti užklausas ir modifikuoti prieš vykdant;
      • mysql_connect skripto pradžioje;
      • Per anksti priimti techniniai sprendimai;
    • Mes sparčiai augame!
      • Kešavimas;
      • Duomenų bazės optimizavimas;
      • Aplikacijos optimizavimas, kad efektyviau panaudotų duombazę;
      • Techninės įrangos atnaujinimas/didinimas;
      • Duomenų bazės replikavimas;
      • Funkcinis particionavimas;
      • Sharding
    • Lentelės schema
      • Atominės reikšmės;
      • Jokių “stebuklingų” lauko reikšmių ;
      • Kartais naudinga turėti perteklinę informaciją;
      • Per daug i n deksų lėtina įrašymą;
      • Atlikti ALTER operaciją didelėje lent e l ė je yra sudėtinga
      • “ hot column”
    • Teisingas duomenų tipo pasirinkimas
      • Mažesnis = geresnis ;
      • Paprastesnis = geresnis ;
      • Ar man tikrai reikia utf8-general-ci?
      • Vengti NULL;
      • varchar(100) vistiek geriau nei varchar(255);
    • Užklausų optimizavimas
      • Rezultatų limitavimas
      • Ar man reikia visų laukų (SELECT * );
        • SELECT * FROM users WHERE nick='petras'
      • EXPLAIN naudoti tik su realiais duomenimis;
      • Vengti “subselect”;
        • SELECT * FROM users WHERE city_id IN (SELECT id FROM cities WHERE country=‘lt’)
      • Naudoti jungtinius indeksus
    • Puslapiavimo problema
      • Priklauso nuo paieškos gylio:
        • Sugeneruoti pirmą puslapį nesunku;
        • 100-asis puslapis – kita istorija
      • Alternatyvos :
        • WHERE id BETWEEN 100 AND 110;
        • WHERE id > 99 ORDER BY id ASC LIMIT 10;
        • Puslapiuoti skripte
      SELECT * FROM users WHERE country='lt' LIMIT 0, 10 SELECT * FROM users WHERE country='lt' LIMIT 100, 10
    • Mitai apie MySQL
      • Slave'ui nereikia gerų parametrų;
      • Man nereikia backup, nes turiu slave;
      • MyISAM vykdo skaitymą greičiau nei InnoDB;
      • Replikavimas yra stabilu;
      • Reikia sudėti indeksus ant visų stulpelių;
      • LIMIT yra labai greitas ant MySQL;
      • INT(1) užima mažiau vietos nei INT(11);
    • A čiū už dėmesį ! [email_address] www.iTo.lt