美文网首页
face_mysql

face_mysql

作者: 北京黄小胖 | 来源:发表于2020-03-26 14:59 被阅读0次
    1. Mysql有什么数据引擎
    • InnoDB,支持行级锁、表级锁、事务、索引、独立表空间,其他引擎均不支持事务
    • Myisam,数据可进行压缩,采用表级锁,查询快,适用于:只读应用、
      非事务应用(数据仓库、报表、日志数据)、空间类应用,会存储自增主键
    • CVS,所有列not null,不支持索引,数据可直接用Excel编辑
    • Active,以zlib对数据压缩,磁盘I/O更少,只支持insert、select
      只能在自增上创建索引,常用于日志采集
    • Memory,基于内存的引擎,数据都存在内存中
    • Ferderated,远程访问引擎,表结构在本地,数据在远程服务器
    1. 事务的ACID是什么
    • 原子性 Atomicity,事务是每一次执行的都是原子操作
    • 一致性 Consistency,事务前后数据的完整性必须保持一致
    • 隔离性 Isolation,多个并发事务之间要相互隔离
    • 持久性 Durability,数据永久保存在数据库中
    1. 隔离级别是什么
    • 未提交读(READ-UNCOMMITED),会产生脏读
    • 提交读(READ-COMMITED),解决脏读,通常优先使用提交读级别
    • 重复读(REPEATABLE READ)重复读出数据不会随事务提交而改变,解决重复读
    • 可串行化(Serializable),进行锁表操作,解决幻读
    1. 数据库三大范式
    • 字段原子性,不可分割
    • 有唯一主键
    • 除却主键不包含关联数据的其他字段,为了快速查询数据,也会存在反范式结构
    1. mysql数据库索引的工作机制是什么

    mysql索引实现通常用B树及B+树,B+树是脱胎于平衡二叉树的多路搜索树,在节点空间大小
    一定的情况下,每个节点可以存储更多的内结点

    • 所有数据存储在叶子节点上
    • 所有叶子节点由指针连接
    1. 索引的优化
    • 尽量全值匹配索引
    • 最佳左前缀匹配法则
    • 不再索引列上做操作,减少索引表的变更
    • 范围条件放在最后,会影响前面条件,导致索引失效
    • 使用覆盖索引,减少select *
    • 不等于要慎用,not/null,使用覆盖索引
    • 字段非空,is null 会导致索引失效,字段可为空则不会
    • like要注意,左匹配不会失效
    • 字符类型+引号,防止类型不一致索引失效同时减少转换
    • or 改union
    1. mysql 优化实践方式
    • 通过explain分析执行计划,优化查询
    • 常用搜索字段建立索引
    • 查询单行添加limit 1,可以有效停止多余搜索
    • 有限且固定长度的字段用enum替换varchar
    • 避免 SELECT *
    • 永远为每张表设置一个 ID
    • 所有字段为固定长度的的表会更快,
    • 垂直分割把一张大表变为多张小表
    • 拆分大的 DELETE 或 INSERT 语句
    • 越小的列会越快
    • 选择正确的存储引擎

    相关文章

      网友评论

          本文标题:face_mysql

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