fejlesztés - 2011 október - 6 megfelelő bejegyzés

Mutass mindent

Jelöld be, hogy főbb mely kategóriákat akarod olvasni, vagy ha csak egyet: kattints a nevére.


Haszprus

Query optimalizálás

©   Haszprus   |   fejlesztés sanoma sql

30 másodperces query:

SELECT webshop_id,
  w.name,
  w.hidden,
  (SELECT count(*) FROM prices 
    WHERE webshop_id=w.webshop_id)
    AS prices_count,
  (SELECT count(*) FROM prices 
    WHERE webshop_id=w.webshop_id and deleted=1)
    AS deleted_count,
  (SELECT count(*) FROM prices 
    WHERE webshop_id=w.webshop_id and product_id>0
     and skipped=0 and deleted=0)
    AS paired_count,
  (SELECT count(*) FROM prices 
    WHERE webshop_id=w.webshop_id and skipped=1 and deleted=0)
    AS skipped_count,
  (SELECT count(*) FROM prices 
    WHERE webshop_id=w.webshop_id and skipped=0
     and product_id=0 and deleted=0)
    AS waiting_count 
  FROM webshops w
  WHERE w.book_shop = 0 
  HAVING prices_count>0 
  ORDER BY w.name

6 másodperces query:

SELECT w.webshop_id, w.name, w.hidden, 
  x.prices_count, x.deleted_count, x.paired_count, 
  x.skipped_count, x.waiting_count
  FROM webshops w
  JOIN (
    select p.webshop_id,
    count(*) AS prices_count,
    sum(deleted) 
      AS deleted_count,
    sum(if(product_id > 0 and skipped = 0 and deleted = 0, 1, 0)) 
      AS paired_count,
    sum(if(skipped = 1 and deleted = 0, 1,0)) 
      AS skipped_count,
    sum(if(skipped = 0 and product_id = 0 and deleted = 0, 1, 0)) 
      AS waiting_count
    from prices p
    group BY webshop_id
    HAVING prices_count > 0
    ORDER BY webshop_id
  ) AS x
  ON x.webshop_id = w.webshop_id
  WHERE w.book_shop = 0
  ORDER BY w.name

Note: ez a bejegyzés évekkel azután lett publikus hogy a rendszert lecserélték egy másikra.

Haszprus

Sanoma day 25

©   Haszprus   |   energiablog fejlesztés sanoma sql

Pár napja megbeszéltünk egy feladatot az Atyaúristennel és a juniorommal. Az atya elment szabira. A juniorom előadta a dolgot a technikai pm-nek, aki egy iszonyat optimizer csávó, komolyan fekete mágia amit sql query optimalizálásban lenyom, közölte, hogy ezt a dolgot nem lehet megoldani, mert van benne egy akkora descartes szorzat amit a világegyetem összes szerverével se fogunk tudni kiszolgálni. Persze égett a képem, de nem volt semmi az ügyből. Ma este ahogy hazamentek már a népek és csillapodott a nyüzsi a Sanomában, eszembe jutott egy remek ötlet amivel szerintem lineárisan halál lazán végigmászhatunk a db-n, baromira nem lesz descartes szorzat, kb. a tábla mérete lesz 2-vel szorozva a szükséges lépések száma, és annyira jó érzéssel jöttem el 19-kor (még maradtam volna, csak időre mentem), hogy ihaj. Remélem meg tudjuk oldani így.

Haszprus

Optimalizációs feladatok

©   Haszprus   |   css fejlesztés howto javascript képzés mysql php sanoma
  • PHP optimalizálás
    • Jenkinses elemzés a kódra
      • CPD és PMD checkre van szükség
    • XHPROF elemzés
  • DB optimalizálás
    • CT mérés javítása
      • Ne okozzon table lockot a CT mérés során keletkező INSERT-ek és UPDATE-ek. Lehetőségek: delayed vagy low priority.
    • MySQL 5.5 percona frissítés
    • Adatok elemzése
      • Nagy méretű táblák elemzése, törlési, archiválási stratégiák kialakítása és a szerkesztőséggel egyeztetés.
    • InnoDB storage engine használat
    • Query optimalizálások
      • Queries not using indexes lekérdezések optimalizálása
      • Slow query optimalizálás
      • Jetprofiler elemzések
    • Táblák particionálása
  • Kereső optimalizálás, Sphinx bevezetés
    • Admin és frontend kereső átalakítása
    • Feleslegessé vált indexek törlése
  • Admin folyamatok optimalizálása
    • Workflow felülvizsgálata, tapasztalatok implementálása
  • HTML, JS, CSS optimalizálás
    • http://gtmetrix.com/ javaslatok alkalmazása

Na ez például egy remek szakmai fejlődési program.

Igazából nem kéne meglepődnöm. Abban a szobában kb. 40 projektnek a fejlesztése zajlik, rengeteg külsős cégnek adnak ki megbízásokat a senior fejlesztőink. Csupa ilyen arccal vagyok körülvéve, juniorok nem nagyon dolgoznak a Sanomában, mert a legtöbb projektet kizárólag külső erőforrásokkal fejlesztik, plusz a hotfixeket belül, meg a deploy, üzemeltetés, ilyesmi. A lényeg hogy rengeteg tudás koncentrálódik körülöttem, és ha jól csinálom akkor rengeteget profitálhatok az itt eltöltött időből. Sajnos ebből a szobából hamarosan ki leszünk emelve egy kevésbé szakmai közegbe, de lobbizni fogok hogy tarthassam minél jobban a DPO-s kapcsolataimat.