• MySQL


    数据库三范式

    • 字段不可再分

    • 有主键,非主键字段依赖主键字段
    • 非主键字段不依赖其他非主键字段

    数据库事务的4大特性

    1. A-原子性
    2. C-一致性
    3. I-隔离性
    4. D-持久性

    MySQL的两个引擎

    • MyISAM
    • InnoDB

    关于锁的区别:

    • MyISAM默认使用表级锁,不支持行级锁
    • InnoDB默认支持行级锁,但是支持表级锁
      • sql语句,走索引,使用行级锁;不走索引,使用表级锁

    适合场景:

    前者查频繁,后者增删改查频繁。另外,MyISAM不支持事务。

    索引的结构

    • B+ - Tree索引
    • Hash索引
    • 位图索引

    平衡二叉树不适合作为索引,因为没有充分利用到磁盘预读。每次IO读取一个磁盘页,但是平衡二叉树是逻辑上的连续,实际在地址中不一定连续,因此每次读取的磁盘页上的数据大部分是用不到的。

    B树适合作为索引,充分利用了磁盘预读。

    索引在哪?

    索引本身较大,不可能完全放在内存中。因此索引以索引文件的形式放在磁盘中。索引的查找过程中需要IO,每次读取一个磁盘块的内容到磁盘中,IO次数决定查询效率。

    索引和主键的区别?

    • 主键是唯一性索引,但是唯一性索引不一定是主键
    • 主键只能有1个,唯一性索引可以有多个
    • 主键不能为null,唯一性索引可以为null

    聚集索引和非聚集索引

    记录的排列顺序和索引的排列顺序一致,是聚集索引,否则是非聚集索引。

    密集索引和稀疏索引

    每一个搜索码都有一个索引项,包含对应的索引码和对应记录所在的地址。但是系数索引,只有部分的搜索码包含索引项。

    B-Tree

    有序数组+平衡多叉树

    B+-Tree

    有序数组链表 + 平衡多叉树

    B+树将真实数据放在叶子节点,而不是内层节点。若放在内层节点,磁盘块的数据项便大幅下降,则B+树的深度将增加,会增加磁盘的IO次数。

    特点:

    • 所有叶子节点指针指向下一个叶子节点
    • 非叶子节点仅存储索引
    • 真实数据存在叶子节点中

    如何定位并优化慢查询

    1. 查询慢查询日志,定位慢定位SQL语句
    2. explain分析sql语句。
    3. 更改sql语句使得sql语句走索引

    笛卡尔积

    没有连接条件的表关系,返回的结果为笛卡尔积。

    数据库连接池

    建立一个数据库连接比较消耗时间和资源,中间涉及到TCP连接的三次握手。

    因此使用连接池保存一定数量的与数据库服务器建立好的连接,当需要连接数据库服务器的时候,只需要从连接池中取出一条空闲的连接即可。

    一回生,二回熟
  • 相关阅读:
    SolrCloud阶段总结
    Solr总结
    机器学习算法与Python实践之(六)二分k均值聚类
    机器学习问题方法总结
    浅谈Kmeans聚类
    AVL树的算法思路整理
    Solr4.6从数据库导数据的步骤
    红黑树
    浅谈 Adaboost 算法
    POJ 1836 Alignment
  • 原文地址:https://www.cnblogs.com/zzytxl/p/12728133.html
Copyright © 2020-2023  润新知