MYSQL数据库优化(一)[通俗易懂]

MYSQL数据库优化(一)[通俗易懂]内存的读写速度远大于磁盘的读写速度,减少磁盘读写,可以作为重点优化方向。 数据库内部最重要的就是存储结构,存储结构必然涉及到数据结构知识。比如用到了常用的哈希图、树。 MYSQL数据库常用两种引擎,I

MYSQL数据库优化(一)

  • 内存的读写速度远大于磁盘的读写速度,减少磁盘读写,可以作为重点优化方向。
  • MYSQL数据库优化(一)[通俗易懂]
  • 数据库内部最重要的就是存储结构,存储结构必然涉及到数据结构知识。比如用到了常用的哈希图、树。
  • MYSQL数据库常用两种引擎,InnoDB、MyISAM,可以直接对表指定数据库引擎。MYSQL数据库优化(一)[通俗易懂]
  • MYSQL索引是一种数据结构,帮助更快的查询数据。索引使用的是B+树(B树改进版,一个节点可以包含多个值,深度可控,IO读写次数少,三层可以保存数千万个值)。叶子节点存值,其余节点存索引值。数据结构可视化工具:https://www.cs.usfca.edu/~galles/visualization/BPlusTree.htmlMYSQL数据库优化(一)[通俗易懂]
  • MYSQL生成的表和数据会保存在mysql/data目录下,并以表名生成对应的目录。FRM文件是表设计文件。
  • InnoDB引擎,会在mysql/data/表目录下生成IBD文件。IBD文件包含索引和数据,索引是聚集型索引。
  • MyISAM引擎,会在mysql/data/表目录下生成MYI和MYD文件,MYI是索引文件,记录存储地址,MYD是数据文件。索引是非聚集型索引。不支持事务。
  • MYSQL数据库优化(一)[通俗易懂]
  •  使用索引注意事项:1>.不要在DML频繁的表上加索引(一百万条数据维护B+树耗性能)。 2>.不要在数据较少的表上加索引。3>.尽量不要在索引列上加函数计算。 4>.不要select *查询,索引会失效。5>.在查询比较频繁的表上加索引。6>.在离散量比较大的字段加索引(计算方法:count(distinct col):count(col)越大越好,如uuid,外键ID等)
  • 尽量使用int自增作为主键,因为这样符合数组的特性,数组查询效率较高(访问局部性原理,数组内存地址连续,读取一个扇区的数据放入二级缓存即可,速度更快,不用反复查询内存)。
  • InnoDB引擎创建的表,可以不设置主键。但是本身不能没有主键,当不设主键的时候,会在表中找到非NULL并且设置为索引的字段作为主键,如果找不到这样的字段,就用_rowid作为主键,这样会导致查询效率变差。1>全表扫描性能差。2>_rowid实现源自于全局的序列,这样高并发插入数据共享此序列,MYSQL保证数据安全,会加上锁。这必然导致性能降低
  • InnoDB引擎主键索引查询时,会根据索引值直接在叶子节点拿到值。其他如字段索引,会生成个B+树,叶子节点保存本身索引值和主键值,再根据主键值回到主键索引B+树中获取真正的值(回表查询)。MYSQL数据库优化(一)[通俗易懂]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/8455.html

(0)
上一篇 2023-02-27
下一篇 2023-02-27

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注