In the "SQLite File Format" document, the BTree layout is described, but now I 
want to know how to get the BTree level (which is the 'K' value mentioned in 
the Documentation)?

Generally, one B+Tree segment contains K keys and (K+1) pointers to child 

From the source code, I found such info:

** This constant controls how often segments are merged. Once there are
** FTS3_MERGE_COUNT segments of level N, they are merged into a single
** segment of level N+1.
#define FTS3_MERGE_COUNT 16


** FTS4 virtual tables may maintain multiple indexes - one index of all terms
** in the document set and zero or more prefix indexes. All indexes are stored
** as one or more b+-trees in the %_segments and %_segdir tables.
** It is possible to determine which index a b+-tree belongs to based on the
** value stored in the "%_segdir.level" column. Given this value L, the index
** that the b+-tree belongs to is (L<<10). In other words, all b+-trees with
** level values between 0 and 1023 (inclusive) belong to index 0, all levels
** between 1024 and 2047 to index 1, and so on.
** It is considered impossible for an index to use more than 1024 levels. In
** theory though this may happen, but only after at least
** (FTS3_MERGE_COUNT^1024) separate flushes of the pending-terms tables.

It seems the BTree level is 16 or 1024 ??

Would any one share you knowledge on how to get this value ?

Much appreciated if you can tell how to tune this value.


sqlite-users mailing list

Reply via email to