美文网首页
索引随笔

索引随笔

作者: 追梦小蜗牛 | 来源:发表于2020-09-15 19:54 被阅读0次
    pexels-alex-kozlov-5235195.jpg

    介绍:

    在关系数据库中,如果有上万甚至上亿条记录,在查找记录的时候,想要获得非常快的速度,就需要使用索引。索引是关系数据库中对某一列或多个列的值进行预排序的数据结构。通过使用索引,可以让数据库系统不必扫描整个表,而是直接定位到符合条件的记录,这样就大大加快了查询速度。

    • 通过对数据库表创建索引,可以提高查询速度。
    • 通过创建唯一索引,可以保证某一列的值具有唯一性。
    • 数据库索引对于用户和应用程序来说都是透明的。

    知识点:

    • Mysql更新记录的时候,查询条件如果带索引,是行锁;否则,是表锁。
    • Mysql在更新某条记录的同时,是可以同时查询这条记录的。MVCC(多版本并发控制)。
    • Sql语句,* 切记不可用。
    • Clustered index: clustered index is a type of index which sorts the data rows in the table on their key values.In the Database, there is only one clustered index per table.
    • Non-clustered index: A Non-clustered index stores the data at one location and indices at another location. The index contains pointers to the location of that data. A single table can have many non-clustered indexes as an index in the non-clustered index is stored in different places.
    • Sqlserver和mysql处理数据库死锁的方案差不多,都是主动关掉一个事务权重小的事务。事务权重一般是通过执行事务中的语句插入、更新、删除语句影响数据条数得出的,事务语句影响数据条数越小,该事务权重越低。
    • jps、jstack定位死锁。
    • Sql语句写的不要过于复杂,有几率产生死锁。
    • Sqlserver索引碎片,当对索引所在的基础数据表进行修改时(包括插入、删除和更新等操作),会导致索引碎片的产生;定时的由DBA执行对应的脚本,来优化。

    Mysql索引:

    • B+树索引。
    • 全文索引。
    • 哈希索引。

    索引结构:

    • 二叉查找树:解决了排序的基本问题,但是由于无法保证平衡,可能退化为链表。
    • 平衡二叉树:通过旋转解决了平衡的问题,但是旋转操作效率太低。
    • 红黑树:通过舍弃严格的平衡和引入红黑节点,解决了AⅥ旋转效率过低的问题,但是在磁盘等场景下,树仍然太高,IO次数太多。
      +B树:通过将二叉树改为多路平衡查找树,解决了树过高的问题。
    • B+树:在B树的基础上,将非叶节点改造为不存储数据的纯索引节点,进一步降低了树的高度;此外将叶节点使用指针连接成链表,范围查询更加高效。

    总结:

    三人行,必有我师,要善于学习别人优秀的地方。

    相关文章

      网友评论

          本文标题:索引随笔

          本文链接:https://www.haomeiwen.com/subject/vkofyktx.html