face_mysql

  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 语句
  • 越小的列会越快
  • 选择正确的存储引擎
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 索引 数据库中的查询操作非常普遍,索引就是提升查找速度的一种手段 索引的类型 从数据结构角度分 1.B+索引:传统...
    一凡呀阅读 3,040评论 0 8
  • MySQL不权威总结 欢迎阅读 本文并非事无巨细的mysql学习资料,而是选择其中重要、困难、易错的部分进行系统地...
    liufxlucky365阅读 2,659评论 0 26
  • 数据库的基本是概念名词解释: 数据库名词解释 元组:可以理解为表的每一行就是一个元组 候选码:若关系中的某一属性组...
    杰伦哎呦哎呦阅读 1,155评论 0 6
  • 这篇文章主要涉及到MySQL的知识点: 索引(包括分类及优化方式,失效条件,底层结构) sql语法(join,un...
    一根薯条阅读 2,791评论 0 8
  • 今天是离开拉萨的日子,虽然这里的风景还没看够,这里的生活还没体验完,这里的故事还没有开篇。但是我得走了,因为只有这...
    Riemann_Jin阅读 1,243评论 8 10