atviriduomenys / spinta

Spinta is a framework to describe, extract and publish data (a DEP Framework).
MIT License
13 stars 4 forks source link

Refactorinti PostgreSQL getall funkciją #746

Closed JustinasKen closed 2 months ago

JustinasKen commented 2 months ago

732 užduotyje buvo aptika, kad po naujausių atnaujinimų sistema smarkiai suletėjo. Viena iš priežasčių, buvo netinkamas puslapio dydis. Atliekant tolimesnę analizę, buvo aptikta keletą kodo vietų, kurios užtrunka pernelyg ilgai. Plačiau apie rezultatus komentare:

https://github.com/atviriduomenys/spinta/issues/732#issuecomment-2309513026.

Reiktų iškelti list_keys generavimą, kad veiktų vieną kartą, prieš iteruojant reikšmes. Taip pat svarbu iškelti dažnai naudojamus parametrus į kintamuosius (kad kas kartą be reikalo nesikreiptų į objektą). Nauja get_row_value funkcija, kiekvieną kartą kviečiama sukuria ResultBuilder, nesvarbu ar to reikia ar ne, tai reiktų pakeisti, kad ResultBuilder būtų kuriamas, tik tada kai jai to reikia.

Visą tai reiktų taip pat peržvelgti ir su Sql backend.

Pabaigoje atlikti 1M įrašų gąvimo greitį 0.1.55 versijoje, 0.1.69 versijoje (įjungus ir išjungus puslapiavimą), bei patvarkytoje versijoje (įjungus ir išjungus puslapiavimą).

Užduotys

Susiję

JustinasKen commented 2 months ago

Po pakeitimų atliktai greičio palyginimo analizė (1M įrašų).

Struktūra:

id | d | r | b | m | property | type    | ref     | source | prepare | level | access | uri | title | description
   | dataset                  |         |         |        |         |       |        |     |       |
   |                          |         |         |        |         |       |        |     |       |
   |   |   |   | Country      |         | id      |        |         |       | open   |     |       |
   |   |   |   |   | id       | integer |         |        |         |       |        |     |       |
   |   |   |   |   | name     | string  |         |        |         |       |        |     |       |
   |   |   |   |   | code     | string  |         |        |         |       |        |     |       |
   |                          |         |         |        |         |       |        |     |       |
   |   |   |   | City         |         | id      |        |         |       | open   |     |       |
   |   |   |   |   | id       | integer |         |        |         |       |        |     |       |
   |   |   |   |   | name     | string  |         |        |         |       |        |     |       |
   |   |   |   |   | country  | ref     | Country |        |         |       |        |     |       |
versija parametrai trukmė
0.1.55 46.43s
0.1.69 page(disable: true) 1m 13.68s
0.1.69 page(size: 100000) 1m 33.66s
#746 page(disable: true) 59.91s
#746 page(size: 100000) 1m 19.63s

Rezultatai: 0.1.55 -> 0.1.69 (išjungtas puslapiavimas) ~ 59% suletėjimas 0.1.55 -> 0.1.69 (100000 puslapiavimas) ~ 102% suletėjimas

0.1.69 -> #746 (išjungtas puslapiavimas) ~ 19% pagreitėjimas 0.1.69 -> #746 (100000 puslapiavimas) ~ 15% pagreitėjimas

0.1.55 -> #746 (išjungtas puslapiavimas) ~ 29% suletėjimas 0.1.55 -> #746 (100000 puslapiavimas) ~ 72% suletėjimas

JuliusLADP commented 2 months ago

Ar pakankamas pagerinimas?