Quite wrong. Searching a B-Tree is relatively inexpensive but node splits are expensive.
Inserting a non-terminal key in a part filled leaf node is cheap, inserting a terminal key is more expensive and a split is more expensive again The reason we spend the extra resources maintaining B-tree indices is because they maintain the keys in sorted sequence. If maintaining keys in order is not required a hashing method can be faster. Our fastest B-Tree indices use the virtual memory capability of the OS as cache and perform very well.by avoiding buffer shadowing and maximizing utilization of physical memory.. Kosenko Max wrote: > Expenses in B-Tree not in the node splitting (that is really not that often > and takes small amount of time). As I've said - it's in finding right place > to insert. > > Root level which takes 1 page will do the same as your hash index. And will > use much less space in cache. This root page in such DB will always be in > cache. So you won't gain any advantage at all. And multi-threading also > won't use the benefit of multiply tables. At least in SQLite. > > That method called partitioning. It gives advantages when partitions divided > by some logic and there is a high chance to hit fewer partitions in average. > It also can benefit a bit in case RDBMS supports real parallel execution and > you have a lot of hard drives. That is not the case with SQLite (well you > can compile without thread safety and try to do own locks). > > I have actually posted a real proposal to make DB much faster. That will > work. > Proposal with 100 tables as a hash buckets doesn't works and I've checked > that a lot of time ago. > You have a sample where it works and gives any visible benefit? I'd like to > see that. > > My another addition to proposal is to use SSD with as small as possible > average access time. Some of them can easily do 50-100x faster. And that > will give 20-50x times faster inserts. > > Thank you. > Max. > > > John Stanton-3 wrote: > >> This technique is used extensively in disk cacheing and in maintaining >> file directories with huge numbers of files.. >> >> I would expect it toincrease key insertion speed because it removes a >> level of index in the B-tree of each index. The expensive activity in a >> B-tree index insertion is a node split which requires that key >> information be updated in each internal node level and possibly a new >> level added. Fewer levels mean faster performance. >> >> This method could also be used to add parallelism by having multiple >> threads or processes perform insertions concurrently. Having each >> database in a separate databases would help this approach. >> It would also help with concurrent read accesses. >> >> If this application only has one table and does not need SQL then there >> are better solutions than using Sqlite and paying the price for its many >> features but not using them. >> > > _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users