MySQL体系结构和存储引擎

数据库与数据库实例

MySQL被设计为一个可移植的数据库,几乎在当前所有的系统上都能运行。并且是一个单进程多线程架构的数据库,MySQL数据库实例在系统上表现就是一个进程。 数据库是文件的集合,是依照某种数据模型组织起来的并存放于二级存储器中的数据集合,数据库实例是程序,是位于用户与操作系统之间的一层数据管理软件,用户对数据库数据的任何操作,都是在数据库实例下进行的,应用程序只有通过数据库实例才能和数据库打交道。

MySQL体系结构

在这里插入图片描述

1.连接池组件
2. 管理服务和工具组件
3.SQL接口组件
4.查询分析器组件
5.优化器组件
6.缓冲(Cache)组件
7.插件式存储引擎
8.物理文件

MySQL数据库区别于其他数据库的最重要的一个特点就是其插件式的表存储引擎。需要特别注意的是,存储引擎是基于表的,而不是数据库。

MySQL存储引擎

  • InnoDB存储引擎

InnoDB存储引擎支持事务,其设计目标主要面向在线事务处理(OLTP)的应用。其特点是行锁设计、支持外键,并支持类似于Oracle的非锁定读,即默认读取操作不会产生锁

InnoDB通过使用多版本并发控制(MVCC)来获得高并发性,并且实现了SQL标准的4种隔离级别,默认为REPEATABLE级别。同时,使用一种被称为next-keylocking的策略来避免幻读(phantom)现象的产生。除此之外,InnoDB储存引擎还提供了插入缓冲(insert buffer)、二次写(double write)、自适应哈希索引(adaptive hash index)、预读(read ahead)等高性能和高可用的功能

对于表中数据的存储,InnoDB存储引擎采用了聚集(clustered)的方式,因此每张表的存储都是按主键的顺序进行存放。如果没有显式地在表定义时指定主键,InnoDB存储引擎会为每一行生成一个6字节的ROWID,并以此作为主键。

  • MyISAM存储引擎
  • NDB存储引擎
  • Memory存储引擎

当表的数据量大于1000万时MySQL的性能会急剧下降吗?

不!MySQL是数据库,不是文件,随着数据行数的增加,性能当然会有所下降,但是这些下降不是线性的,如果用户选择了正确的存储引擎,以及正确的配置,再多的数据量MySQL也能承受.

连接MySQL

连接MySQL操作是一个连接进程和MySQL数据库实例进行通信。从程序设计的角度来说,本质上是进程通信。如果对进程通信比较了解,可以知道常用的进程通信方式有管道命名管道命名字、TCP/IP套接字、UNIX域套接字。MySQL数据库提供的连接方式从本质上看都是上述提及的进程通信方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lhj_loveFang_1105

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值