MySQL 7年前

MySQL 技术内幕阅读笔记(0)--- InnoDB 体系结构和存储引擎

作者头像 刘宇帅
2783 0

MySQL 体系结构

mysql体系结构图

从图我们可以看出,MySQL 有如下几部分组成:

  • 连接池组件
  • 管理服务和工具组件
  • SQL 接口组件
  • 查询优化组件
  • 优化器组件
  • 缓冲组件
  • 插件式存储引擎
  • 物理文件

需要注意存储引擎是基于表的而不是库,比如我们可以在建表的时候为表指明存储引擎。

MySQL 存储引擎

常见存储引擎

  • InnoDB MySQL 5.5.8 版本之后的默认存储引擎,事务性,行锁,支持外键。
  • MyISAM 存储引擎不支持事务、表锁,支持全文索引,主要面对一些 OLAP 数据库应用。MySQL 5.5.6 版本之前的默认存储引擎。
  • NDB 存储引擎是一个集群存储引擎。
  • Memory 存储引擎将表中的数据存在内存中,非常适合做临时数据的临时表和数据仓库的维度表。
  • Archive 存储引擎只支持 INSERT 和 SELECT 操作。使用 zlib 算法压缩数据行。
  • 等等

Memory 存储引擎虽然是内存操作,但是只支持表锁,并发性能差,并且不支持 TEXT 和 BLOB 列类型,MySQL 数据库使用 Memory 存储引擎作为临时表来存放查询中的中间结果集,如果中间结果集大于 Memory 存储引擎的容量设置又或者中间结果包含 BLOB 和 TEXT 列类型字段,则 MySQL 会把其转化为 MyISAM 表并存放到磁盘上,并且 MyISAM 本身不缓存数据文件,因此这时产生的临时表的性能将极大下降。

连接 MySQL

MySQL 服务器就是一个进程,支持通常的进程通信方式。

  • TCP/IP
  • 命名管道和共享内存
  • UNIX 域套字节
作者头像

刘宇帅

非著名程序员,全栈开发工程师,长期专注系统开发与架构设计。

提示

功能待开通!


暂无评论~

相关文章

MySQL之创建库

MySQL 创建库语法 CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification] ... create_specification: [DEFAULT] CHARACTER SET [=] charset_name | [DEFAULT] COLLATE [=] collation_name 创建一个默认的数据库 create database school; 执行结果 mysql> create database school; Query OK, 1 row affecte

MySQL之创建表

创建表 创建学生表 SQL create table if not exists`students` ( `id` int not null auto_increment comment '学生id', `no` char(5) not null comment '学生学号', `name` varchar(128) not null default '' comment '学生姓名', `sex` tinyint not null default 0 comment '0 无 1 女 2 男', `age` tinyint null default

MySQL之删除数据

单表删除语法 DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias] [PARTITION (partition_name [, partition_name] ...)] [WHERE where_condition] [ORDER BY ...] [LIMIT row_count] 多表删除 DELETE [LOW_PRIORITY] [QUICK] [IGNORE] tbl_name[.*] [, tbl_name[.*]] ... FROM table_r

查看 MySQL 表的大小

information_schema MySQL 自带一个数据库 information_schema ,这个数据库用于记录 MySQL 数据库的基本信息,比如数据库名,数据库的表,表栏的数据类型与访问权限等。 mysql> use information_schema; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql>

高性能MySQL阅读笔记(0)--- 选择优化的数据类型

MySQL支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要。不管存储哪种数据类型,下面几个简单的原则都有助于做出更好的选择。 更小的通常更好 一般情况下,尽可能使用可以正确存储数据的最小数据类型。更小的数据类型通常更快,因为他们占用的更少的磁盘、内存和CPU缓存,处理时需要的CPU周期更少。 简单最好 简单的数据类型的操作通常需要更少的CPU周期。例如整数比字符操作代价更低,因为字符集和校对规则使字符串比较比整型更复杂。 两个实际使用中的例子,一个是使用MySQL内置的类型而不是字符串存储时间,另一个是使用整型而不是字符串存储IP。 尽量避免NULL 很多表都包含可为 NULL