mysql 数据库回退一下_mysql数据库之存储引擎

mysql存储引擎概述

什么是存储引擎?

MYSQL中的数据用各不相同的技术存储在文件(或者内存)中,这些技术中的每一种技术都使用不同的存储机制,索引技巧,锁定水平并且最终提供广泛的不同的功能和能力.通过选择不同的技术,你能狗获得额外的速度或者功能,从而改善你的应用的整个功能.

内存存储引擎能够在内存中存储所有的表格数据,或者,你需要一个支持事物处理的数据库(以确保事物处理不成功是数据的回退能力),这些不同的而技术和以及配套的相关功能在mysql中被称为存储引擎(也称作表类型).

存储引擎是MYSQL有别于其他数据库管理系统的最大特色,比如他的兄弟Oracle中就没有专门的存储引擎的概念,仅仅有OLTP和OLAP模式的区分,参数上的不同.

我们知道数据存在表中,我们可以将表理解为由行和列组成的表格,每个表格是一个数据,表示在存储数据时,还要组织数据的存储结构,这些数据的组织结构就是有存储引擎决定的,即存储引擎的作用就是规定了数据存储的存储结构

简单来说: 存储引擎就是数据的存储结构,有实际业务决定.

mysql支持哪些存储引擎?

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

mysql支持的存储引擎包括:

FEDERATED

MRG_MYISAM

MYISAM

BLACKHOLE

CSV

MEMORY

ARCHIVE

InnoDB

PERFORMANCE_SCHEMA

其中InnoDB提供事务安全表,其它存储引擎都是非事务安全表

存储引擎

各种存储引擎的特性

4130c3bb96c2d958b76d520ac416f507.png

最常见的两种存储引擎是MYISAM和InnoDB

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

FEDERATED

federated存储引擎不存放数据,提供了从多个物理机上连接不同的mysql服务器创建一个逻辑数据库的能力,类似oracle的透明网关,适用于分布式或数据市场的场景.

MYISAM

MYISAM是mysql官方提供默认的存储引擎,其特点是不支持事务,外键,操作速度,访问快,但是表级别的锁定限制了它在读写负载方面的性能,因此它经常应用于只读或者已读为主的数据场景.注意:不缓存数据文件,只缓存索引文件

BLACKHOLE

黑洞存储引擎,类似于 Unix 的/dev/null,Archive 只接收但却并不保存数据。对这种引擎的表的查询常常返回一个空集。这种表可以应用于 DML 语句需要发送到从服务器,但主服务器并不会保留这种数据的备份的主从配置中。

CSV

它的表真的是以逗号分隔的文本文件。CSV 表允许你以 CSV 格式导入导出数据,以相同的读和写的格式和脚本和应用交互数据。由于 CSV 表没有索引,你最好是在普通操作中将数据放在 InnoDB 表里,只有在导入或导出阶段使用一下 CSV 表。

Memory

在内存中存储所有数据,应用于对非关键数据由快速查找的场景。Memory类型的表访问数据非常快,因为它的数据是存放在内存中的,并且默认使用HASH索引,但是一旦服务关闭,表中的数据就会丢失

InnoDB

MySql5.6版本默认的存储引擎。InnoDB 是一个事务安全的存储引擎,它具备提交、回滚以及崩溃恢复的功能以保护用户数据。主要面向OLTP方面的应用,其特点是行锁设置、支持外键,并支持类似于Oracle的非锁定读,即默认情况下读不产生锁,

NDB

NDB存储引擎是一个集群存储引擎,类似于Oracle的RAC,但它是Share Nothing的架构,因此能提供更高级别的高可用性和可扩展性。NDB的特点是数据全部放在内存中,因此通过主键查找非常快。

关于NDB,有一个问题需要注意,它的连接(join)操作是在MySQL数据库层完成,不是在存储引擎层完成,这意味着,复杂的join操作需要巨大的网络开销,查询速度会很慢。

Archive

正如其名称所示,Archive非常适合存储归档数据,如日志信息。它只支持INSERT和SELECT操作,其设计的主要目的是提供高速的插入和压缩功能。

Memory

Memory存储引擎(之前称为Heap)将表中数据存放在内存中,如果数据库重启或崩溃,数据丢失,因此它非常适合存储临时数据。

各种存储引擎的特性介绍

存储引擎在mysql中的使用

查看当前的默认存储引擎:

mysql> show variables like "default_storage_engine";

查询当前数据库支持的存储引擎

mysql> show engines G;

指定存储引擎建表

在建表时指定

mysql> create table ai(id bigint(12),name varchar(200)) ENGINE=MyISAM;

mysql> create table country(id int(4),cname varchar(50)) ENGINE=InnoDB;

也可以使用alter table语句,修改一个已经存在的表的存储引擎。

mysql> alter table ai engine = innodb;

在配置文件中指定

my.ini文件

[mysqld]

default-storage-engine=INNODB

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值