Как правильно использовать sys.getsizeof, чтобы получить размер базы данных в python? - PullRequest
0 голосов
/ 14 марта 2020

У меня есть большая база данных leveldb с именем db.

tot=0
i=0
for key,value in db.RangeIter():
    tot=sys.getsizeof(key)+sys.getsizeof(value)
    i=i+1
print(f'total rows:  {i}')
print(f'total size:  {tot}')

дает

total rows:  119113
total size:  143

, что действительно странно.

Итак, я написал это:

keyTot=0
valTot=0
for key,value in db.RangeIter():
    keyTot += len(key)
    valTot += len(value)

print(f'Total key size:  {keyTot}  Total value size:    {valTot}    Total:  {keyTot+valTot}')

, который дал

Total key size:  1404729  Total value size:    452897532    Total:  454302261

Так что же измерял sys.getsize при измерении ключа? И как получилось такое небольшое число после перебора 119113 строк?

1 Ответ

1 голос
/ 14 марта 2020

Вы представляете, что это работает всего?

tot=sys.getsizeof(key)+sys.getsizeof(value)

Это не , вы перезаписываете tot на каждой итерации

...