网站建设发展方向及前景展望,免费注册个人网站不花钱,怎么看网站是否备案成功,网站如可引导客户先说结论#xff1a; 3层B树大概可以存#xff1a; 主键为bigint#xff1a;约2000w主键为int#xff1a;约4000w*备注#xff1a; 在《阿里开发手册》中建议#xff0c;单表行数超过500万行或者单表容量超过2GB#xff0c;才推荐进行分库分表#xff0c;如果预计三年后…先说结论 3层B树大概可以存 主键为bigint约2000w主键为int约4000w*备注 在《阿里开发手册》中建议单表行数超过500万行或者单表容量超过2GB才推荐进行分库分表如果预计三年后数据量根本达不到这个级别就不必要在创建表时就分库分表。 计算
在Innodb存储引擎里面最小存储单元是页而一个页的大小默认是16KB。 一个节点叶子节点或非叶子节点的大小就是一页。 在MySQL Innodb存储引擎中的B树的一个节点大小为“1页”也就是16k。也即代表B树的每个节点可以存16KB数据。 为什么设计成这个大小解释一下 之所以设置为一页是因为对于大部分业务一页就足够了。一条数据必须是放在一个节点中不能拆开到多个节点存储。而一般一条数据大概1KByte那么一页能容纳的大概16条即一个节点容纳不止一条数据而且是多达16条所以大小采用最小存储单元足够用了~ 非叶子节点 ps指针是用来指向下一个“节点”的。 假设主键类型为bigint占用8Byte指针可以设置为占用6Byte总共14Byte。这样就可以算出一个非叶子节点大概可以存放16KByte/14Byte1170个“主键指针”的组合。假设主键类型为int占用4Byte指针可以设置为占用6Byte总共10Byte。这样就可以算出一个非叶子节点大概可以存放16KByte/10Byte≈1600个“主键指针”的组合。叶子节点 在B树中真正的数据是只存储在叶子节点中的。 这里我们假设我们的一行数据大小是1K那么我们一个叶子节点就可以存16KByte/10Byte16条行数据。 由此可以推算出公式 两层总数 非叶子节点(根) * 叶子节点。三层总数 非叶子节点(根) * 非叶子节点 * 叶子节点。主键为bigint约2000w
2层B树的话可以存放1170个*16条18720条行数据。3层B树的话可以存放1170个*1170个*16条21902400条行数据。
主键为int约4000w
2层B树的话可以存放1600个*16条25600条行数据。3层B树的话可以存放1600个*1600个*16条40960000条行数据。所以三层B树也就差不多2000w条或4000w条数据。 参考面试官问我为啥B树一般都不超过3层3层B树能存多少数据redo log与binlog的两阶段提交_3层b树能存储多少数据_不平衡的叉叉树的博客-CSDN博客