B+ 树

B+ 树🌲

定义

B+Tree是B树的变种,有着比B树更高的查询性能,来看下m阶B+Tree特征:

1、有m个子树的节点包含有m个元素(B-Tree中是m-1)

2、根节点和分支节点中不保存数据,只用于索引,所有数据都保存在叶子节点中。

3、所有分支节点和根节点都同时存在于子节点中,在子节点元素中是最大或者最小的元素。

4、叶子节点会包含所有的关键字,以及指向数据记录的指针,并且叶子节点本身是根据关键字的大小从小到大顺序链接。


1、红点表示是指向卫星数据的指针,指针指向的是存放实际数据的磁盘页,卫星数据就是数据库中一条数据记录。

2、叶子节点中还有一个指向下一个叶子节点的next指针,所以叶子节点形成了一个有序的链表,方便遍历B+树。

Read more
长耗时 Job 优化利器:Spark

长耗时 Job 优化利器:Spark

引言:

传统多线程跑job遇到的问题


(java多线程运行job示例图)
问题:
1.settle结算每天数据都达到千万级别,遇到活动高峰期会达到4千万,即使多线程cpu利用60%也得运行4小时。
2.一旦运行失败重试的时间成本特别高,且影响第二天结算相关业务。
3.遇到双十一618活动,数据量陡增造成fullgc,但增加节点存储提高节点性能,又会造成服务器资源的浪费。

  • 由此可以发现,settlejob执行job很吃力,效率也很差,如下图:
Read more