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

mysql存储引擎用哪个好

MySQL存储引擎的选择取决于具体的应用需求和场景。以下是几种常见的MySQL存储引擎及其特点、优势和适用场景:

1. InnoDB

  • 特点:支持事务处理、行级锁定、外键约束。
  • 优势:适用于高并发、需要事务支持的应用。
  • 适用场景:银行系统、电子商务、订单管理系统等。

2. MyISAM

  • 特点:不支持事务,表级锁定,读取速度快。
  • 优势:适用于读多写少的场景。
  • 适用场景:日志系统、数据仓库等。

3. Memory

  • 特点:数据存储在内存中,访问速度快。
  • 优势:适用于临时表、缓存数据等需要高速读写的场景。
  • 适用场景:实时分析、临时数据处理等。

4. Archive

  • 特点:只支持INSERT和SELECT操作,适合存储历史数据。
  • 优势:适用于归档存储,节省空间。
  • 适用场景:日志归档、历史数据存储等。

5. NDB (MySQL Cluster)

  • 特点:分布式存储引擎,支持高可用性和数据分片。
  • 优势:适用于需要高可用性和扩展性的应用。
  • 适用场景:大规模分布式系统、实时应用等。

6. Federated

  • 特点:允许将多个物理数据库连接成一个逻辑数据库。
  • 优势:适用于跨数据库的数据访问。
  • 适用场景:数据集成、跨数据库查询等。

选择建议

  • 事务支持:如果应用需要事务支持,InnoDB是首选。
  • 读取速度:如果应用读多写少,MyISAM可能更合适。
  • 内存使用:如果需要高速读写且数据可以容忍丢失,Memory引擎是一个好选择。
  • 归档存储:Archive引擎适合存储不常访问的历史数据。
  • 高可用性:NDB引擎适用于需要高可用性和扩展性的应用。
  • 跨数据库访问:Federated引擎适用于需要跨数据库访问的场景。

常见问题及解决方法

1. InnoDB表锁问题

问题:在高并发写入时,InnoDB可能会出现表锁问题,导致性能下降。 原因:InnoDB的行级锁定在高并发写入时可能会升级为表锁。 解决方法

  • 优化SQL查询,减少锁的持有时间。
  • 使用innodb_lock_wait_timeout参数调整锁等待超时时间。
  • 考虑分表分库,减少单个表的并发压力。

2. MyISAM并发写入问题

问题:MyISAM不支持事务,表级锁定在高并发写入时会导致性能瓶颈。 原因:MyISAM的表级锁定机制在高并发写入时会导致大量等待。 解决方法

  • 考虑迁移到InnoDB引擎,支持事务和行级锁定。
  • 使用缓存机制减少对数据库的直接写入。

3. Memory引擎数据丢失问题

问题:Memory引擎的数据存储在内存中,服务器重启会导致数据丢失。 原因:Memory引擎的数据依赖于内存,服务器重启或崩溃会导致数据丢失。 解决方法

  • 定期将Memory引擎的数据备份到持久化存储。
  • 使用Redis等外部缓存系统来存储临时数据。

参考链接

通过以上信息,您可以根据具体的应用需求选择合适的MySQL存储引擎,并解决常见的相关问题。

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

相关·内容

mysql面试题1:MySQL有哪些常见存储引擎MySQL默认是哪个存储引擎

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:MySQL有哪些常见存储引擎?...MySQL有以下几种常见的存储引擎: InnoDB:默认的存储引擎,支持事务处理、行级锁定和外键约束等特性,适用于大部分应用场景。...MyISAM:在早期版本的MySQL中常用的存储引擎,适用于读频繁的应用,但不支持事务处理和行级锁定。...NDB:适用于高可用性和高并发读写的存储引擎,具备分布式数据库的特性,用于构建MySQL Cluster。 另外,还有一些其他的存储引擎如Merge、Federated等,但使用较为有限。...面试官:MySQL默认是哪个存储引擎MySQL的默认存储引擎是InnoDB。

8300
  • 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存储引擎

    存储引擎的选择为不同的业务表选择不同的存储引擎,例如:查询操作多的业务表, MyISAM。临时数据 Memeroy。常规的并发大更新多的表 InnoDB。... TINYINT,因为 ENUM 也是整数存储。字符类型变长情况下,varchar 更节省空间,但是对于 varchar 字段,需要一个字节来记录长度。...比如在业务系统中,要记录所有接收和发送的消息,这个消息是 XML 格式的,blob 或者 text 存储,用来追踪和判断重复,可以建立一张表专门用来存储报文。...为什么同样 MySQL,有的公司可以抗住百万千万级别的并发,而有的公司几百个并发都扛不住,关键在于怎么。所以,数据库慢,不代表数据库本身慢,有的时候还要往上层去优化。...当然,如果关系型数据库解决不了的问题,我们可能需要用到搜索引擎或者大数据的方案了,并不是所有的数据都要放到关系型数据库存储

    10410

    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)....对于复杂的应用系统,还可以 根据 实际情况选择多种存储引擎进行组合。 InnoDB: 是 Mysql 的默认存储引擎,支持事务、外键。

    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

    MySQL 存储引擎

    # MySQL 存储引擎 学习视频地址 (opens new window) MySQL 体系结构 存储引擎介绍 存储引擎特点 InnoDB MyISAM Memory 区别及特点 存储引擎选择 #...引擎存储引擎层, 存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API和存储引擎进行通 信。不同的存储引擎具有不同的功能,这样我们可以根据自己的需要,来选取合适的存储引擎。...而对于存储引擎,也是一样,他是mysql数据库的核心,我们也需要在合适的场景选择合适的存储引 擎。接下来就来介绍一下存储引擎存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式 。...# InnoDB 介绍 InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在 MySQL 5.5 之后,InnoDB是默认的 MySQL 存储引擎。...# MyISAM 介绍 MyISAM是MySQL早期的默认存储引擎

    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存储引擎

    当别人问我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

    MySQLMySQL存储引擎

    不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能。现在 许多不同的数据库管理系统都支持多种不同的数据引擎MySQL的核心就是存储引擎。...用户可以 根据不同的需求为数据表选择不同的存储引擎 可以使用 SHOW ENGINES 命令 可以查看Mysql的 所有执行引擎我们 可以到 默认的执行引擎是innoDB 支持事务,行级锁定和外键。...拥有较高的插入,查询速度,但不支持事 务 InnoDB:事务型速记的首选引擎,支持ACID事务,支持行级锁定,MySQL5.5成为默认数据库引 擎 Memory: 所有数据置于内存的存储引擎,拥有极高的插入...(在显示结果里参数engine后面的就表示该表当前存储引擎): show create table student;   -- 创建新表时指定存储引擎: create table(...) engine...MySQL默认存储引擎方法 1.

    5.3K20

    Mysql存储引擎 innodb

    为了保证区中页的连续性,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 中引人的,其设计目标是髙效地存储数据。简单来说,一个页中存放的行数据越多,其性能就越髙。...下图显示了 Compact 行记录的存储方式:图片Compact 行记录格式的首部是一个非 NULL 变长字段长度列表,并且其是按照列的顺序逆序放置的,其长度为:若列的长度小于 255 字节, 1 字节表示...; 若大于 255 个字节,2 字节表示。

    4.8K92

    MySQL存储引擎总结

    对于MySQL来说,它提供了很多种类型的存储引擎,我们可以根据对数据处理的需求,选择不同的存储引擎,从而最大限度的利用MySQL强大的功能。...这篇博文将总结和分析各个引擎的特点,以及适用场合,并不会纠结于更深层次的东西。我的学习方法是先学会用,懂得怎么,再去知道到底是如何能用的。下面就对MySQL支持的存储引擎进行简单的介绍。...InnoDB存储引擎特别适合处理多重并发的更新请求。 2.事务。InnoDB存储引擎是支持事务的标准MySQL存储引擎。 3.自动灾难恢复。与其它存储引擎不同,InnoDB表能够自动从灾难中恢复。...MEMORY 使用MySQL Memory存储引擎的出发点是速度。为得到最快的响应时间,采用的逻辑存储介质是系统内存。...例如:可以12个相同的表来存储服务器日志数据,每个表对应各个月份的名字来命名。当有必要基于所有12个日志表的数据来生成报表,这意味着需要编写并更新多表查询,以反映这些表中的信息。

    1.7K60
    领券