Introduction to VPS and Web Technology Development

mysql为什么不用二叉搜索树、平衡二叉树?一个元素

自由vps 数据库

带着问题学习
1. mysql为什么不用二叉搜索树、平衡二叉树?一个元素
2. mysql为什么用B+Tree,不用B-Tree?
3. mysql为什么不建议用uuid当主键
4. mysql中的聚集索引,稀疏索如何理解ike'aaoodb定会用到索引么为什么不建议写select*from进行查询
6.
最左匹配原则怎么理解 ?
8.
为什么建议主键ID是递增的,和B+Tree有什么关系?
9.为什么innodb引擎要求一定要建立主键键索?


1.二叉树最差的情况是单一方向树  成了一个链表  io次数过多   ,平衡二叉树解决了二叉树io节点单向的问题 io次数相等 但是单节点存储数据过小  mysql单页数据是16k 浪费导致节点过多,io次数仍然庞大  b树虽然解决了二叉平衡树的问题 但是数据可能存在于非子节点上,性能不稳定,io次数不稳定,另外范围搜索不方便,b+树是数据存在叶子节点,索引存在非子节点,每个节点数据的时间复杂度一致io次数只跟数据规模有关,另外数据是使用双向链表有序连接的 适合范围查找

2.
UUID是一种全局唯一标识符,常被用作主键。然而,在MySQL数据库中,使用UUID作为主键可能会带来一些问题。本文将探讨为什么不建议使用UUID作为MySQL主键。

1>. UUID占用更多的存储空间

UUID是一个128位的数字,通常以36个字符的字符串形式表示。相比之下,整型主键只需要4个字节即可表示。使用UUID作为主键会占用更多的存储空间,导致索引和数据的存储变得更加庞大。


2>. UUID会导致索引性能下降

在MySQL中,主键是自动创建的唯一索引。使用UUID作为主键会导致索引树的深度增加,从而降低索引的查询效率。此外,UUID是随机生成的,无法预测其值的范围,也会导致索引的分裂和碎片化,进一步降低索引的性能。

3>. UUID会导致数据排序性能下降

noDB引擎使用聚簇索引来存储数据。聚簇索引是按照主键顺序来存储数据的。使用UUID作为主键会导致数据的随机分布,无法按照顺序进行排序,进而导致数据的存储和查询性能下降。

4>. UUID会导致数据的备份和恢复变得更加困难

使用UUID作为主键会导致数据的备份和恢复变得更加困难。由于UUID是随机生成的,无法预测其值的范围,备份和恢复时需要将整个表进行复制,增加了存储和网络带宽的负担。

尽管UUID是一种全局唯一标识符,但在MySQL中,使用UUID作为主键可能会带来一些问题。如果需要使用UUID,可以考虑将其作为辅助索引,而不是主键。对于主键,建议使用自增整型类型,可以提高索引和数据的存储和查询性能,同时也方便备份和恢复数据。

3. 聚簇索引是指数据有序存储,非聚簇索引则表示数据随机存储,但是如果需要快速找到数据,需要建立大量的索引,伴随着的是稠密索引,聚簇索引则可以使用少量的索引,也就是稀疏索引,减少索引文件的存储空间。               select * from 可能导致回表次数增加,正常如果只是走索引列的话 可以取出索引列和主键,不需要回表查询,但是如果是多列的话就导致必须用主键回表重新查一次数据,如果多列,可以考虑使用联合索引      

6 mysql索引以最左边匹配的索引列为准
8 保证数据插入顺序,减少叶碎片,进而减少节点数据和数据空间的使用率
9. 默认自动创建主键,不过是以整条数据为准,结果如上面的uuid,数据插入无序化,浪费页存储和节点  造成查表io以及回标次数增加

使用chatGPT寻求答案
标签: 暂无标签

免责声明:

本站提供的资源,都来自网络,版权争议与本站无关,所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。侵删请致信E-mail:master@freevpsweb.com

同类推荐
评论列表