首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysql常用存储引擎

MySQL常用存储引擎

基础概念

MySQL是一种关系型数据库管理系统,它支持多种存储引擎,每种存储引擎都有其特定的优势和适用场景。存储引擎决定了数据如何存储、检索以及如何处理并发操作。

相关优势

  1. InnoDB:
    • 优势: 支持事务处理(ACID兼容)、行级锁定、外键约束、崩溃恢复能力。
    • 应用场景: 适用于需要高并发读写、事务处理的应用,如电子商务网站、银行系统等。
  • MyISAM:
    • 优势: 读取速度快,占用空间小,支持全文索引。
    • 应用场景: 适用于读取操作远多于写入操作的场景,如数据仓库、日志记录等。
  • Memory:
    • 优势: 数据存储在内存中,访问速度极快。
    • 应用场景: 适用于临时表、缓存数据等需要高速读写的场景。
  • CSV:
    • 优势: 数据以CSV格式存储,易于导入导出。
    • 应用场景: 适用于需要与外部系统交换数据的场景。
  • Archive:
    • 优势: 高效存储大量不常访问的历史数据。
    • 应用场景: 适用于日志记录、数据归档等。

类型

  • 事务型引擎: 如InnoDB,支持事务处理。
  • 非事务型引擎: 如MyISAM,不支持事务处理。
  • 内存型引擎: 如Memory,数据存储在内存中。
  • 特殊用途引擎: 如CSV、Archive等。

应用场景

  • InnoDB: 适用于需要高并发、事务支持的应用。
  • MyISAM: 适用于读取密集型应用。
  • Memory: 适用于需要快速读写的临时数据存储。
  • CSV: 适用于数据导入导出频繁的场景。
  • Archive: 适用于数据归档和长期存储。

常见问题及解决方法

  1. InnoDB表损坏:
    • 问题: InnoDB表可能因为各种原因损坏,导致无法访问。
    • 解决方法: 使用mysqlcheck工具进行修复,或者从备份中恢复数据。
  • MyISAM表锁定:
    • 问题: MyISAM不支持行级锁定,可能导致写操作被阻塞。
    • 解决方法: 考虑迁移到支持行级锁定的InnoDB引擎。
  • Memory表数据丢失:
    • 问题: Memory表的数据存储在内存中,服务器重启会导致数据丢失。
    • 解决方法: 定期将Memory表的数据备份到持久化存储中。
  • CSV表导入导出问题:
    • 问题: CSV表在导入导出时可能会遇到格式问题。
    • 解决方法: 确保CSV文件的格式正确,并使用LOAD DATA INFILESELECT ... INTO OUTFILE语句进行导入导出。

示例代码

代码语言:txt
复制
-- 创建InnoDB表
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    email VARCHAR(255) NOT NULL,
    INDEX idx_email (email)
) ENGINE=InnoDB;

-- 创建MyISAM表
CREATE TABLE logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    message TEXT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=MyISAM;

-- 创建Memory表
CREATE TABLE temp_data (
    id INT AUTO_INCREMENT PRIMARY KEY,
    value INT NOT NULL
) ENGINE=MEMORY;

参考链接

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MySQL常用存储引擎之MyISAM

MySQL5.5版本之前的默认存储引擎就是MyISAM 系统表 临时表(查询优化器建立的临时表) MyISAM存储引擎表由MYD和MYI组成 MyISAM的特性 并发性与锁级别 对于读写混合的并发性不会太好...演示实例 use test # 进入你自己的数据库 create table myIsam(id int,c1 varchar(10))engine=myisam; # 需要通过engine指定引擎...cd /var/lib/mysql/test # test是你的库名字 库的位置一般都在你的安装路径下 yum的默认在/var/lib/mysql myIsam_352.sdi myIsam.MYD...myIsam.MYI 存储数据信息 存储索引信息 回到mysql的test1库中执行 check table myisam +--------------+-...MYI)的文件比压缩前(OLD)的文件还要大,因为原来的数据太小了 知识为了演示 对于表中的读写 # 当前myIsam表已经进行压缩了,进行插入操作,结论【对于已经压缩的表是不能进行写操作的,只能读】 mysql

49210

MySQL常用存储引擎之InnoDB

MySQL5.5以后版本的默认存储引擎 支持事物的ACID特性 Innodb使用表空间存储 innodb_file_per_table (如果此参数为ON) 则会创建一个独立的表空间:tablename.ibd...> create table myinnodb1(id int,cid varchar(20))engine=innodb; 查看数据库目录下只有 myinnodb1.frm # 存储的系统表空间...存储引擎的特性 Innodb是一种事务性存储引擎 完全支持事物的ACID特性 Redo log和Undo log 查看Redo log大小 以字节为单位 redo log通常是物理日志,记录的是数据页的物理修改...包括MVCC Innodb支持行级锁 行级锁可以最大程度的支持并发 行级锁由存储引擎层实现 1.4 什么是数据库中的锁 锁的主要作用是管理共享资源的并发访问 锁用于实现事物的隔离性 所保证一个用户写入数据时候另一个用户进行写的时候会被阻塞...> lock table myinnodb write; mysql> unlock table; 当存在锁的情况下 select的语句会被阻塞需要进行解锁 锁的粒度 表级锁 通过mysql的服务器层实现

33010
  • MySQL的几种常用存储引擎

    MySQL有9种存储引擎,不同的引擎,适合不同的场景,我们最常用的,可能就是InnoDB,应该是从5.5开始,就成为了MySQL的默认存储引擎。...show engines可以查询MySQL支持的这几种存储引擎,从表头能看出来倾向,都写YES的就是InnoDB, 借老杨这篇文章《知识篇 | MySQL常用存储引擎MyISAM、InnoDB和MEMORY...InnoDB存储引擎 InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,InnoDB是默认的MySQL引擎。...他的CPU效率可能是任何其他基于磁盘的关系型数据库引擎锁不能匹敌的。 (3) InnoDB存储引擎完全与MySQL服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持他自己的缓冲池。...Archive非常适合存储归档数据,如记录日志信息可以使用Archive。 MySQL三种存储引擎推荐列表,

    5K21

    MySQL 常用数据存储引擎区别(转)

    mysql有多种存储引擎,目前常用的是 MyISAM 和 InnoDB 这两个引擎,除了这两个引擎以为还有许多其他引擎,有官方的,也有一些公司自己研发的。...这篇文章主要简单概述一下常用常见的 MySQL 引擎,一则这是面试中常被问到的问题,二则这也是数据库设计中不可忽略的问题,用合适的引擎可以更好的适应业务场景,提高业务效率。...MyISAM MyISAM 是 mysql 5.5.5 之前的默认引擎,它支持 B-tree/FullText/R-tree 索引类型。...Memory Memory 是内存级别存储引擎,数据存储在内存中,所以他能够存储的数据量较小。 因为内存的特性,存储引擎对数据的一致性支持较差。锁级别为表锁,不支持事务。...而业务真发展的一定程度时,自带的存储引擎无法满足时,这时公司应该是有实力去自主研发满足自己需求的存储引擎或者购买商用的存储引擎了。

    81730

    MySQL有哪些存储引擎MySQL存储引擎大全)

    MyISAM在所有MySQL版本里被支持;不支持事务处理;它是MySQL的默认的存储引擎; MEMORY MEMORY存储引擎,别称HEAP存储引擎;提供“内存中”表,将数据存储在内存中。...MEMORY存储引擎不支持事务处理;MySQL的所有版本都支持InnoDB存储引擎;注释:MEMORY存储引擎正式地被确定为HEAP引擎。...InnoDB存储引擎;它支持事务处理; BDB BDB存储引擎,别名BERKELEYDB;BDB存储引擎提供事务安全表;mysql 5.1以下版本才支持此存储引擎; EXAMPLE EXAMPLE存储引擎是一个...你可以用这个引擎创建表,但没有数据被存储于其中或从其中检索。这个引擎的目的是服务,在MySQL源代码中的一个例子,它演示说明如何开始编写新存储引擎。同样,它的主要兴趣是对开发者。...NDB NDB存储引擎,别名NDBCLUSTER;NDB Cluster是被MySQL Cluster用来实现分割到多台计算机上的表的存储引擎。它在MySQL-Max 5.1二进制分发版里提供。

    6.2K41

    MySQL 存储引擎

    # MySQL 存储引擎 学习视频地址 (opens new window) MySQL 体系结构 存储引擎介绍 存储引擎特点 InnoDB MyISAM Memory 区别及特点 存储引擎选择 #...引擎存储引擎层, 存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API和存储引擎进行通 信。不同的存储引擎具有不同的功能,这样我们可以根据自己的需要,来选取合适的存储引擎。...# InnoDB 介绍 InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在 MySQL 5.5 之后,InnoDB是默认的 MySQL 存储引擎。...# MyISAM 介绍 MyISAM是MySQL早期的默认存储引擎。...MEMORY:将所有数据保存在内存中,访问速度快,通常用于临时表及缓存。MEMORY的缺陷就是 对表的大小有限制,太大的表无法缓存在内存中,而且无法保障数据的安全性。

    2.5K20

    mysql存储引擎

    MySQL5.5以后默认使用InnoDB存储引擎,其中InnoDB和BDB提供事务安全表,其它存储引擎都是非事务安全表。...在MySQL5.1以 后,INFORMATION_SCHEMA数据库中存在一个ENGINES的表,它提供的信息与show engines;语句完全一样,可以使用下面语句来查询哪些存储引擎支持事物处理:...主要存储引擎:MyISAM、InnoDB、MEMORY和MERGE介绍: 在创建表到时候通过engine=...或type=...来指定所要使用到引擎。...(二)InnoDB InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比MyISAM的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。...2)外键约束: MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引。

    19240

    MySQL存储引擎

    存储引擎的选择为不同的业务表选择不同的存储引擎,例如:查询操作多的业务表,用 MyISAM。临时数据用 Memeroy。常规的并发大更新多的表用 InnoDB。...大文件存储不要用数据库存储图片(比如 base64 编码)或者大文件;把文件放在 NAS 上,数据库只需要存储 URI(相对路径),在应用中配置 NAS 服务器地址。...表拆分或字段冗余将不常用的字段拆分出去,避免列数过多和数据量过大。...为什么同样用 MySQL,有的公司可以抗住百万千万级别的并发,而有的公司几百个并发都扛不住,关键在于怎么用。所以,用数据库慢,不代表数据库本身慢,有的时候还要往上层去优化。...当然,如果关系型数据库解决不了的问题,我们可能需要用到搜索引擎或者大数据的方案了,并不是所有的数据都要放到关系型数据库存储

    10410

    Mysql存储引擎

    当别人问我Mysql存储引擎的时候,我就知道Myisam和innodb 虽然知道有其他的存储引擎,但是从来没有去了解过今天了解一下扩充知识 查看Mysql存储引擎 show engines; MyISAM...Mysql 5.5之前默认的存储引擎 MyISAM存储引擎由MYD和MYI组成 ?  ....frm存储表结构,任何存储引擎都有 .myd 数据文件 .myi索引文件 非聚集索引 MyISAM存储引擎的特性: 并发性与锁级别-表级锁 支持全文检索 支持数据压缩   myisampack -b...适用场景: 非事物型应用(数据仓库,报表,日志数据) 只读类应用 空间类应用(空间函数,坐标) INNODB MySql5.5以及以后版本默认的存储引擎 innodb_file_per_table   ...特点:   提供了远程访问Mysql服务器上的表的方法   本地不存储数据,数据全部放到远程服务器上   本地需要保存表结构和远程服务器的链接信息  使用场景:   偶尔的统计分析及手工查询 这个存储引擎默认是不开启的如果需要使用需要手动开启

    3.1K20

    Mysql存储引擎

    前言 MySQL提供了插件式的存储引擎架构。所以MySQL存在多种存储引擎,可以根据需要使用相应的引擎MySQL支持的存储引擎有很多,常用的是:InnoDB,MyISAM。...MEMORY,MERGE作为了解,其中InnoDB提供事务安全,其他存储引擎是非事务安全表。...:  查看Mysql数据库的默认引擎指令: show variables like '%storage_engine%'; 1.1 InnoDB InnoDB存储引擎Mysql的默认引擎。...外键约束 MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,要求父表必须有对应的索引,子表在创建外键的时候,也会自动的创建对应的索引。...insert into student_all values(3,'幸运'); 总结 对于存储引擎的选择,根据业务需求对应各个存储引擎的特征进行选择即可。

    19820

    MySQL存储引擎

    目录 1.MySQL体系结构 2.存储引擎介绍 3.存储引擎特点 4.存储引擎选择 1.MySQL体系结构 MySQL整体的逻辑结构可以分为4层,客户层、服务层、存储引擎层、数据层 客户层 客户层:进行相关的连接处理...触发器、视图等也在这一层 存储引擎存储引擎层负责对数据的存储和提取,常见的存储引擎有InnoDB、MyISAM、Memory等,在 MySQL5.5之后,MySQL默认的存储引擎就是InnoDB,InnoDB...而对于存储引擎,也是一样,他是mysql 数据库的核心,我们也需要在合适 的场景选择合适的存储引擎。接下来就来介绍一下存储引擎。...介绍 InnoDB 是一种兼顾高可靠性和高性能的通用存储引擎,在 MySQL 5.5 之后, InnoDB 是默认的 MySQL 存储引擎。 2)....MEMORY :将所有数据保存在内存中,访问速度快,通常用于临时表及缓存。 MEMORY 的缺陷就 是对表的大小有限制,太大的表无法缓存在内存中,而且无法保障数据的安全性

    3.3K21

    MySQL存储引擎

    文章目录 MySQL存储引擎 一、查看修改存储引擎 二、主要引擎介绍 1、MyISAM引擎 2、InnoDB 引擎 3、MEMORY 引擎 MySQL存储引擎 一、查看修改存储引擎 查看mysql提供什么存储引擎...systemctl restart mysqld.service 创建表时指定存储引擎: CREATE TABLE 表名( 建表语句; ) ENGINE = 存储引擎名称; 修改表的存储引擎: ALTER...TABLE 表名 ENGINE = 存储引擎名称; 二、主要引擎介绍 不同引擎的本质上是数据库数据存储的结构方式不同 在不同的数据下数据库储存有不同的需求,所以需要不同的引擎 种类 锁机 制 B/B...的数据存储结构(表在磁盘上的组成结构): .frm文件(存储表定义) .MYD文件(MYData,存储数据) .MYI文件(MYIndex,存储索引) 2、InnoDB 引擎 主要特点: InnoDB...存储表结构(MySQL8.0时,合并在表名.ibd中) 表名.ibd 存储数据和索引 注:索引采用聚集索引,索引和数据存储在同一个文件 对比MyISAM: 对比MyISAM的存储引擎, InnoDB写的处理效率差一些

    2.4K40

    MySQLMySQL存储引擎

    不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能。现在 许多不同的数据库管理系统都支持多种不同的数据引擎MySQL的核心就是存储引擎。...用户可以 根据不同的需求为数据表选择不同的存储引擎 可以使用 SHOW ENGINES 命令 可以查看Mysql的 所有执行引擎我们 可以到 默认的执行引擎是innoDB 支持事务,行级锁定和外键。...分类  MyISAM:Mysql 5.5之前的默认数据库引擎,最为常用。...拥有较高的插入,查询速度,但不支持事 务 InnoDB:事务型速记的首选引擎,支持ACID事务,支持行级锁定,MySQL5.5成为默认数据库引 擎 Memory: 所有数据置于内存的存储引擎,拥有极高的插入...MySQL默认存储引擎方法 1.

    5.3K20

    Mysql存储引擎 innodb

    在默认情况下,InnoDB存储引擎都有一个共享表空间ibdata1,即所有数据都存放在这个表空间内。...为了保证区中页的连续性,InonoDB存储引擎一次从磁盘申请4-5个区。在默认情况下,InnoDB存储引擎的页的大小为16KB,即一个区中应有64个连续的页。...(对于一些小表)1.4、页(page)页是InnoDB存储引擎磁盘管理的最小单位,每个页默认16KB;InnoDB存储引擎从1.2.x版本开始,可以通过参数innodb_page_size将页的大小设置为...2.1、Compact 行记录格式Compact 行记录是在 MySQL 5.0 中引人的,其设计目标是髙效地存储数据。简单来说,一个页中存放的行数据越多,其性能就越髙。...Redundant 是 MySQL 5.0 版本之前 InnoDB 的 行 记 录 存 储 方 式,这里就不展开。

    4.8K92
    领券