Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer

db_del of BerkeleyDB

by Perl_Love (Acolyte)
on Jun 10, 2016 at 02:59 UTC ( #1165264=perlquestion: print w/replies, xml ) Need Help??

Perl_Love has asked for the wisdom of the Perl Monks concerning the following question:

Hello everybody, when I use BerkelyDB, I find that I use the db_del function. But the DB file has not become small , maybe it just made a mark. Is there any method can make DB files smaller? what method ? By the way, when run after the production , there will be three file, __db.001, __db.002, __db.003, what is the action of three files ? thanks a lot!
#!/usr/bin/perl -w use warnings; use BerkeleyDB; $|=1; my $env=new BerkeleyDB::Env -Home=>'/home/y6cme/perl5', -Flags=>DB_CREATE|DB_INIT_MPOOL || die; my %hash; my $db=tie(%hash,"BerkeleyDB::Btree", -Filename=>"test.db", -Flags=>DB_CREATE, -Env=>$env) || die; for(1..10000){ $hash{$_}=$_; } untie $db; undef %hash; my $db2=tie(%hash2,"BerkeleyDB::Btree", -Filename=>"test.db", -Flags=>DB_CREATE, -Env=>$env) || die; for(1..10000){ $db2->db_del($_); } untie $db2; undef %hash2;

Replies are listed 'Best First'.
Re: db_del of BerkeleyDB
by Corion (Pope) on Jun 10, 2016 at 06:35 UTC

    The generic approach to make a database file smaller is to rewrite the file by copying all rows into a new file.

    Usually, databases don't release free space back to the file system but just mark it as "available for data" internally. It is often much faster to maintain this internal bookkeeping instead of rewriting the file each time a record in the middle of the file gets deleted.

Re: db_del of BerkeleyDB
by Anonymous Monk on Jun 10, 2016 at 03:27 UTC

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1165264]
Approved by Athanasius
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (3)
As of 2021-01-17 00:00 GMT
Find Nodes?
    Voting Booth?