mysql数据库原理与sql优化_MySQL数据库原理与sql优化

702157236040057dfac66b6f65ed21e3.png

一、MySQL 结构

62475d852409ae338f3e2b384c0f1770.png

二、MySQL 数据库引擎

1、数据库存储引擎主要是 算法+IO

算法:如何存数据,比如存在什么样的文件里,格式是什么样的等等

IO:和数据库交互时,IO的访问数据的方式,比如是根据物理地址访问,还是根据扇区连续索引依次访问等等

2、常见数据库存储引擎

了解三个常见的即可:

(1)ISAM

主要适用于,查询远大于更新的场景。优点,读取操作速度很快,但不支持事务,不支持容错恢复。目前用的比较少

(2)MyISAM

ISAM 增强版(mysql 5.5之前版本,默认的是此引擎)

保留了读取速度很快的特点,进行了大量扩展,如索引功能。但表损坏后无法修复(硬盘崩溃可以)、不支持事务

a97c6997f49b36a53b6fdb887ce85d04.png

(3)InnoDB

有跨越性特性的引擎,造就了目前MySQL 灵活性的产品

虽然查询性能没有ISAM和myISAM高,但整体来说处理大量数据时的组大性能设计,整体性能很高,支持事务和外键(悲观锁,乐观锁都有),耗用存储资源也比较小。

5.5以上常用版本的默认引擎。

5.7版本中,InnoDB管理的数据文件是 .frm文件(表和数据)和 .idb(索引)文件

(4)Memory

数据存在内存中,只有结构信息存在磁盘中,所以读取速度极快,但死机之后数据丢失。但应用场景极少,一般如临时数据。

3、数据库引擎管理命令

7b86540ccdce3c7d6d3d50481c1c0f1f.png

5e13053d2e3ba20891baeb7c36d1dc1e.png

三、数据库索引

1、索引介绍

索引优点:创建索引可以大大提升系统的查询性能

原理:索引的值换算成该行数据在物理磁盘上的存储位置

所以:创建唯一性索引,保证每行数据的唯一性,大大加快数据检索速度

索引的缺点:耗费时间、耗费空间、拖累速度

(1)索引的创建和维护(数据库负责维护)需要耗费时间,并且索引需要占用物理空间。

(2)对数据表中的数据增加、修改时,索引页需要动态维护,降低了数据更新的速度

PS:

什么样的地段适合建立索引:

(1)经常搜索的列上,可以加快搜索速度

(2)经常使用的外键,外键一般作为表间连接,可以加快连接速度

(3)经常使用在where子句的列上,加快条件判断速度

(where f1 and f2 ,必须在字段f1、f2上同时建立索引)

什么样的字段不适合建立索引:

(1)不经常使用或 数据值很少的列(如:人事表的性别)

(2)定义为text(大文本)、image、bit(文件)数据类型,因为数据量大或值很少

2、MySQL支持的索引类型,即索引的存储形式

(1)B-Tree索引

索引按照平衡树(balancetree)的结构来存储,和普通树结构不同的是主要压缩树的深度(越深索引越慢),广度比较大,索引时比较快

(2)Full-text索引

全文索引,存储结构也是,平衡树。主要把索引中的关键字进行了全数据排列,是解决需要用like查询效率低的问题,只能解决"**%"形式的like查询。

3、索引的建立和管理

MySQL通过命令行创建索引

四大索引(普通索引、唯一索引、全文索引、聚合索引)

(1)普通索引

最基础的索引,允许建立在任意的字段中,没有严格要求,可以有空数据。也是5.5以上默认的索引类型(5.5以上存储引擎是InnoDB,InnoDB默认索引时普通索引)。

creat index [index_name] on [table_name](column(length)) 直接创建方式

如:creat index name_index on users(name(3)) 给users表中的name列(取该列数据的前三位放到索引里,可以不写,即所有数据都放到索引里),创建索引名字为name_index,

查看:show index form user

alter table [table_name] and index [index_name](column(length)) 修改表结构的方式添加索引

查看索引

show index from [table_name]

show keys from [table_name]

(2)唯一索引

23eeed7946a44e6fba65264eaf9da092.png

(3) 全文索引

仅三种字段允许创建全文索引

5ca63ff225169c8fbc5981c097a38892.png

(4)组合索引

d38f0d8273d109236a7b615f0dc0777d.png

4 索引的优化

0c39eff782040479f3432124b8ad2621.png

073f91e01613c9cefdf79d9e5f032fbd.png

5、索引总结

0e77e658149dba97cdf3da32628c5dea.png

四、SQL优化

28bf93d585c44eece30c0e3b57da823c.png

4a7863d0beb187deba39daab531e6f3e.png

7992a179ac8c0a812466c82c69265554.png

4533fab164de89121b880f7c63ed486e.png

1448001e1f3b135234ec84a2ca3a32cd.png

5075c9c99205e04e079c56abadbcf3ed.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值