utelle / wxsqlite3

wxSQLite3 - SQLite3 database wrapper for wxWidgets (including SQLite3 encryption extension)
http://utelle.github.io/wxsqlite3
Other
589 stars 178 forks source link

There is question that cost much time when I drop a table with larger data; #115

Closed newHand1 closed 2 months ago

newHand1 commented 3 months ago

I drop a table encrypted by AES 256,why cost less time when use wxsqlite3 version 3.5.9,but cost more time when use wxsqlite3 version 4.0.0?Thanks for answering;

utelle commented 3 months ago

I drop a table encrypted by AES 256,why cost less time when use wxsqlite3 version 3.5.9,but cost more time when use wxsqlite3 version 4.0.0?

You are giving too little information to allow thorough analysis of what may be going on.

What does "larger data" mean? Are you talking of thousands, millions or billions of data rows resp megabytes, gigabytes or terabytes of data? What size does your database have?

What does "much time" mean? Are you talking of milliseconds, seconds, minutes ...?

wxSQLite3 version 3.5.9 and 4.0.0 are both over 6 years old. Do you experience the same problems with more recent versions?

The encryption algorithms themselves did not change between the mentioned versions. Version 4.0.0 added the option to select the encryption scheme at runtime. This only adds a level of indirection and can hardly explain bigger time differences. However, the included SQLite version changed, too, from version 3.22.0 to 3.23.0.

Searching the internet for sqlite3 drop table slow results in many hits. That is, you are not the only one experiencing performance problems with drop table - and that has nothing to do with encryption. Dropping a table in SQLite can be an expensive operation, because SQLite may have to change many database pages on disk. There are many factors that have influence on performance - like cache size, page size, foreign keys, journal mode etc.

One experiment I would recommend would be to test the behaviour of drop table with an unencrypted database with both wxSQLite3 resp SQLite3 versions. This would allow to verify whether encryption is really responsible for time differences.

newHand1 commented 3 months ago

OK,I'll look for problems with my own program and try to do some test.Thank you for your answer.