MySQL-InnoDB索引与算法 | 天遥的码农日常



MySQL-InnoDB索引与算法 | 天遥的码农日常

B+树的常识

首先我们来介绍一下B+树。B+树是一种平衡树,而与普通的树不同的是:

  1. B+树的叶子节点包含所有数据,并且叶子节点有序的用双向循环链表进行连接,因此可以实现从根节点读,也可以从叶子节点遍历。
  2. B+树的每个非叶子节点有n棵子树则有n个关键字(不同于B树的靠关键字之间的缝隙来定义指针,而直接由关键字定义指针)
  3. 所有非终端节点可以看成是索引部分,节点中仅含有其子树根节点最大(或最小)关键字
    那么B+树的优势也就可以看出来了:
  4. B+树中非叶子节点并不包含指向竿见自具体信息的指针,因此内部节点比B树更小,因此一次性读入内存更多的关键字,IO的读写次数也就降低了。
  5. 查询效率稳定,因为对于每一次查询,都需要从根节点走到叶子节点才能拿到具体指向文件的信息,所以关键字查询的路径长度相同。
  6. B+树方便扫库,从叶子节点扫一遍就行,不用采用中序遍历之类的
  7. B+树支持range-query非常方便,这是主要原因。(举个例子:要查5-10之间数据,第一次查5.再一次查10,然后串起来遍历就行,而B树就很麻烦了)
    B+树的劣势在于树的高度会比B树高一些,对于频率查询B树也更好,因为可以将频率高的节点上升。


Read full article from MySQL-InnoDB索引与算法 | 天遥的码农日常


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts