11 files changed, 14 insertions(+), 31 deletions(-) Commit zrobiony, ale utknąłem przy optymalizacji #bazydanych :/ Jest tu może jakiś spec, któreg można było by się poradzić? :>
mam bazę z ponad 2 mln rekordów (obecnie #mysql), wstawiając kolejne wiersze muszę wykonać niestety porównanie, by sprawdzić, czy nowy wiersz powinien być zmerdżowany do innego, czy powinien tworzyć nowy. Niestety owo sprawdzanie jest cholernie wolne, bowiem muszę porównać, czy dwa wiersze mają odpowiedni współczynnik podobieństwa tekstu (długość levenshteina)
@noisy: wstawianie jest dość wolne, bowiem w praktyce jest ono złożoności O(n^2/2 * k), gdzie n jest liczba wierszy a k długością stringa, po którym funkcja levenshteina poddaje się twierdząc, że wpisy nie są podobne.
@noisy: w obecnym rozwiązaniu tworzenie indeksów nie daje zysku, bowiem select, który jest konieczny przed insertem wywołuje funkcje, a nie korzysta z standardowych operatorów jak =, >, <
@koob: nie wprost, ale to się dzieje pod spodem. levenshtein ma złożoność k^2 (gdzie k to jest min długości dwoch porownywanych stringow), jednak ja uzywam funkcji levenshteina o zlozonosci liniowej, by zdobyc "kandydatow", ktora nie sprawdza czy są dopasowane, tylko czy są na tyle niepodobne dwa rekordy
@noisy: funkcja liczaca tego levensthteina masz zadeklarowana w mysqlu jak rozumiem ? Moze sprawdz przez rozszerzenia (so/dll), gdzies pewnie znajdziesz na googlach gotowca.
@noisy: tabela jest myisam/innodb ? Moze finetuning samego mysqla cos pomoze ? Moze percona ? Jezeli waskim gardlem jest liczenie levenstheina to pewnie duzo nie zwalczysz w mysqlu.
11 files changed, 14 insertions(+), 31 deletions(-)Commit zrobiony, ale utknąłem przy optymalizacji #bazydanych :/ Jest tu może jakiś spec, któreg można było by się poradzić? :>
#programujzwykopem #python
mam bazę z ponad 2 mln rekordów (obecnie #mysql), wstawiając kolejne wiersze muszę wykonać niestety porównanie, by sprawdzić, czy nowy wiersz powinien być zmerdżowany do innego, czy powinien tworzyć nowy. Niestety owo sprawdzanie jest cholernie wolne, bowiem muszę porównać, czy dwa wiersze mają odpowiedni współczynnik podobieństwa tekstu (długość levenshteina)
Tutaj jest jakis .so:
http://samjlevy.com/2011/03/mysql-levenshtein-and-damerau-levenshtein-udfs/
jak tego nie uzywasz to moze warto przetestowac ?