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

mysql 不使用innodb

基础概念

MySQL是一个流行的关系型数据库管理系统,它支持多种存储引擎,其中InnoDB是最常用的存储引擎之一。InnoDB提供了事务支持、行级锁定和外键约束等特性,非常适合需要高并发和数据一致性的应用场景。

不使用InnoDB的原因

  1. 简单应用:对于一些简单的读写操作,不需要复杂的事务处理和数据一致性保证的应用,可能会选择其他更轻量级的存储引擎。
  2. 性能考虑:在某些特定场景下,如大量数据的插入操作,MyISAM等存储引擎可能会有更好的性能表现。
  3. 兼容性:一些旧的应用可能依赖于特定的存储引擎,而这些存储引擎可能已经被废弃或不再推荐使用。

相关优势

  • MyISAM:MyISAM是MySQL的默认存储引擎(在某些版本中),它提供了快速的读取操作和全文索引支持,但不支持事务和外键。
  • Memory:Memory存储引擎将数据存储在内存中,因此读写速度非常快,适合临时表和缓存。
  • Archive:Archive存储引擎适用于存储大量不经常访问的历史数据,它提供了高效的压缩和解压功能。

类型

MySQL支持多种存储引擎,包括但不限于:

  • InnoDB:支持事务、行级锁定和外键约束。
  • MyISAM:提供快速的读取操作和全文索引支持。
  • Memory:数据存储在内存中,读写速度快。
  • Archive:适用于存储大量历史数据。

应用场景

  • InnoDB:适用于需要高并发、事务支持和数据一致性的应用,如电子商务网站、银行系统等。
  • MyISAM:适用于读取密集型应用,如新闻网站、博客系统等。
  • Memory:适用于需要快速读写操作的临时表和缓存。
  • Archive:适用于存储大量不经常访问的历史数据,如日志文件、归档数据等。

遇到的问题及解决方法

问题:为什么选择不使用InnoDB?

原因

  • 性能:在某些特定场景下,其他存储引擎可能提供更好的性能。
  • 功能需求:如果应用不需要事务支持和外键约束,可能会选择更简单的存储引擎。
  • 兼容性:旧的应用可能依赖于特定的存储引擎。

解决方法

  • 评估需求:根据应用的具体需求,评估是否需要事务支持、数据一致性和高并发处理能力。
  • 性能测试:在不同的存储引擎上进行性能测试,选择最适合应用需求的存储引擎。
  • 迁移方案:如果决定从InnoDB迁移到其他存储引擎,需要制定详细的迁移方案,并进行充分的测试。

示例代码

假设我们有一个简单的表,不需要事务支持,可以选择使用MyISAM存储引擎:

代码语言:txt
复制
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100)
) ENGINE=MyISAM;

参考链接

通过以上信息,您可以更好地理解MySQL存储引擎的选择及其应用场景,并根据具体需求做出合适的选择。

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

相关·内容

  • Mysql-InnoDB 系列】InnoDB 架构

    封面图片来自:mysql官方文档,8.0版本,InnoDB Architecture。 一 概述 ? 如上图所示,mysqlInnoDB存储引擎架构,包括了内存架构和磁盘架构两部分。...本章将阐述Mysql InnoDB的架构中的组成部分,并在后续系列文章中详细描述各部分的细节。...二 内存架构 2.1 缓冲池(Buffer Poll) 缓冲池是InnoDB位于主存储器中的一片区域,用于缓存访问过的表和索引数据。缓冲池允许直接从内存处理频繁使用的数据,这加快了处理速度。...为了方便缓存管理,缓冲池被实现成页的链表结构;很少使用的数据会使用LRU算法的一种变体从缓存中淘汰。 了解如何利用缓冲池将频繁访问的数据保存在内存中,是MySQL调优的一个重要方面。 ?...MySQL 8.0.20版本之前,双写缓冲区存储空间归属于InnoDB的系统表空间。MySQL 8.0.20开始,双写表空间存储区域放在了双写文件中。

    1.2K10

    MySQL InnoDB引擎

    # 架构 # 概述 MySQL5.5 版本开始,默认使用InnoDB存储引擎,它擅长事务处理,具有崩溃恢复特性,在日常开发中使用非常广泛。下面是InnoDB架构图,左侧为内存结构,右侧为磁盘结构。...MySQLinnoDB引擎中虽然没有直接支持hash索引,但是给我们提供了一个功能就是这个自适应hash索引。...(在MySQL5.x版本中还包含InnoDB数据字典、undolog等) 参数:innodb_data_file_path mysql> show variables like 'innodb_data_file_path...Temporary Tablespaces InnoDB 使用会话临时表空间和全局临时表空间。存储用户创建的临时表等数据。...IO Thread 在InnoDB存储引擎中大量使用了AIO来处理IO请求, 这样可以极大地提高数据库的性能,而IOThread主要负责这些IO请求的回调。

    1.3K10

    mysql innodb核心

    | #总的页数 mysql核心特性CR 简称断电恢复 需要用到的 redo 重做日志 inndb log buffer, ib_logfile.n undo 回滚日志 lsn 数据页的lsn号码 最新的...读取表空间头部拿到老的lsn号码 2把修改过的数据页和redo日志加载到内存 3把数据页进行前滚 4调用数据页头上两个db_trx_id , db_roll_ptr进行undo回滚 ib buffer pool mysql...意向排它锁 和排它锁,意向共享锁是兼容的 共享锁 和 排它锁,意向排它锁兼容 意向共享锁 和排它锁兼容 MDL锁细分 GLOBAL 全局锁 范围 备份一般有 COMMIT 提交包含锁...1找到阻塞语句 2进行分析是不是这条语句阻塞了 3查看有没有GLDBAL级别的锁,查看是不是有人手动加入 lock tables 4找到processlist id kill掉 mdl锁卡住了如果处理默认就是...核心参数 innodb_buffer_pool_size 是mysql中最大的一块内存结构设置是物理内存50%-75% innodb_buffer_pool_chunk_size 它是一个分配单元大小

    1.3K41

    MySQL系列 | MySQLInnoDB

    04 数据存储 在整个数据库体系结构中,我们可以使用不同的存储引擎来存储数据,而绝大多数存储引擎都以二进制的形式存储数据;这一节会介绍 InnoDB 中对数据是如何存储的。...05 如何存储表 MySQL 使用 InnoDB 存储表时,会将表的定义和数据索引等信息分开存储,其中前者存储在 .frm 文件中,后者存储在 .ibd 文件中,这一节就会对这两种不同的文件分别进行介绍...08 如何存储记录 与现有的大多数存储引擎一样,InnoDB 使用页作为磁盘管理的最小单位;数据在 InnoDB 存储引擎中都是按行存储的,每个 16KB 大小的页中可以存放 2-200 行的记录。...当 InnoDB 存储数据时,它可以使用不同的行格式进行存储;MySQL 5.7 版本支持以下格式的行存储方式: Antelope 是 InnoDB 最开始支持的文件格式,它包含两种行格式 Compact...12 索引的数据结构 在上一节中,我们谈了行记录的存储和页的存储,在这里我们就要从更高的层面看 InnoDB 中对于数据是如何存储的;InnoDB 存储引擎在绝大多数情况下使用 B+ 树建立索引,这是关系型数据库中查找最为常用和有效的索引

    1.4K20

    MySQL replace命令,建议使用

    DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) ) ENGINE=InnoDB...DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) ) ENGINE=InnoDB...*/; 在这个实验的过程中,我分别测试了MySQL8.0版本和MySQL5.7版本,发现MySQL8.0的版本,虽然binlog内容一致,但是更新了AUTO_INCREMENT的值。...这个现象,可以理解为MySQL 5.7 版本的一个bug。 03 潜在影响 可能你会想,如果主库此时利用replace操作插入一个冲突的新的数据记录,这个从库的自增值不就又同步了么。...4 | aaa | 4 | +----+------+------+ 3 rows in set (0.13 sec) 但是新主库的auto_increment值是4,意味着新主库上下一个指定自增

    2.3K20

    InnoDB 啥时候执行事务?

    InnoDB 引擎的所有语句都是在事务中执行的。 三、探讨 第一印象,Spring 里启用事务相关的功能,如不使用 @Transaction 注解或者不使用编程式事务的方式不就好了吗?...遇事决 StackOverflow https://stackoverflow.com/questions/55014017/in-innodb-is-all-sql-in-the-transaction...对应的 MySQL 官方文档 https://dev.mysql.com/doc/refman/5.6/en/innodb-autocommit-commit-rollback.html By default...(使用 InnoDB 引擎时)连接MySQl 服务时,自动提交模式是打开的,会自动提交你的每一个待执行 SQL 语句。...理论上可以,但暂时没找到关闭方法,即使有关闭方法,那这会导致 innoDB 引擎都无法工作而不是不开启事务。夸张点说,这和说关闭MySQL 服务就可以让 InnoDB 执行事务差别不大。

    1.1K20

    MySQL Innodb和Myisam

    与聚集索引记录不同,二级索引记录包含隐藏的系统列,也不会就地更新。 当二级索引列被更新时,旧的二级索引记录被删除标记,新记录被插入,并最终被删除标记记录被清除。...2、.frm 文件 MySQL 将表的数据字典信息存储在数据库目录中的 .frm 文件中。与其他 MySQL 存储引擎不同, InnoDB它还在系统表空间内自己的内部数据字典中对有关表的信息进行编码。...当表包含可变长度列它用于(VARCHAR,VARBINARY,BLOB或TEXT)。每行都使用固定数量的字节存储。 在三种MyISAM存储格式中,静态格式是最简单和最安全的(最不容易损坏)。...当由于更新而变长时,行可能变得碎片化(以连续的片段存储)。 除了长度小于4的字符串列之外,所有字符串列都是动态的。...SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表 索引 MyISAM(堆组织表)使用的是非聚簇索引、索引和文件分开,随机存储,只能缓存索引 InnoDB(索引组织表)使用的聚簇索引

    1.7K20

    MySQL InnoDB创建索引

    1.3 InnoDB系统列 InnoDB在创建表的时候,除了用户自定义的列之外,还会额外地增加几个隐藏的列,这些列在MySQL Server看来是不可见的,我们称之为系统列。...使用DB_ROW_ID作为主键创建聚簇索引。...2.代码分析 2.1 建表时创建索引 假设我们在建表时创建主键,但是创建一个二级索引,SQL语句形如: CREATE TABLE t (a int, b int, index idx(b)) ENGINE...2.2 重启后创建索引 MySQL重启后,内部索引对象丢失,需要在启动后重新创建相关的索引。MySQL重启后首先会将数据字典内的信息进行读取和初始化,然后根据数据字典的信息进行索引的创建。...还是以上文的表t为例,假设现在MySQL重启,如何在t上构建索引? step1: 创建聚簇索引 无论如何,聚簇索引都会第一个创建。

    5.7K30

    MySQL InnoDB Cluster 详解

    MySQL NDB Cluster:容易与MySQL InnoDB Cluster混淆,是另外一款产品,提供更高级别的可用性和冗余性。适用于分布式计算环境,使用内存型的NDB存储引擎。...上图显示了InnoDB Cluster的整体架构,MySQL Router推荐部署在应用端,通过MySQL Shell 对其进行管理配置,使用MySQL Enterprise Monitor对整体进行监控...使用它可以轻松配置管理 InnoDB Cluster。 ? MySQL Shell里集成了一个特殊的管理API,可以通过它执行DBA常见的操作,后面会有一个详细的使用例子介绍给大家。...InnoDB Cluster管理 让我们看一下如何对InnoDB Cluster进行管理,我将会通过使用MySQL Shell为您展示相关内容。 ?...新节点不存在异于集群的事务 增量恢复适用于: 事务未被清理 新节点包含空的GTID集 启用GTID 和二进制日志 ? ? ? ? ? 创建配置集群之后,介绍一下监控。 ? ? ? ? ? ? ?

    2.2K20

    MySQL为什么推荐使用in

    使用IN语句时,MySQL可能会遇到以下问题: 索引问题:MySQL使用索引来加速查询,但在使用IN语句时,MySQL可能无法有效地使用索引。...这是因为IN语句中的值列表可能是动态的,无法提前确定索引的使用情况。当MySQL无法使用索引时,它将执行全表扫描,逐行比较每个值,这会导致查询性能下降。...内存消耗:当使用IN语句时,MySQL需要将值列表中的所有值加载到内存中进行比较。如果值列表很大,可能会导致内存消耗过高,甚至引发内存溢出的问题。这对于内存有限的系统来说尤其重要。...查询优化器的限制:MySQL的查询优化器在处理IN语句时可能会遇到一些限制。例如,优化器可能无法准确估计IN语句的选择性,从而导致选择不合适的查询计划。...在优化查询性能时,我们可以使用MySQL的查询分析工具来帮助我们理解查询的执行计划和性能瓶颈,从而做出更好的决策。

    34930

    Mysql存储引擎 innodb

    InnoDB逻辑存储结构图片1.1、表空间(Tablespace)表空间可以看做InnoDB逻辑结构的最高层,所有的数据都放在表空间中。...在 InnoDB 1.0x 版本之前,InnoDB 存储引擎提供了 Compact 和 Redundant 两种格式来存放行记录数据,这也是目前使用最多的一种格式。...2.1、Compact 行记录格式Compact 行记录是在 MySQL 5.0 中引人的,其设计目标是髙效地存储数据。简单来说,一个页中存放的行数据越多,其性能就越髙。...变长字段的长度最大不可以超过 2 字节,这是因在 MySQL 数据库中 VARCHAR 类型的最大长度限制为 65535。...若 InnoDB 表没有定义主键,每行还会增加一个 6 字节的 rowid 列。Redundant 是 MySQL 5.0 版本之前 InnoDB 的 行 记 录 存 储 方 式,这里就不展开。

    4.8K92

    MySQL InnoDB 存储结构

    MySQL InnoDB 存储结构 InnoDB存储引擎的关键特性包括: 插入缓冲(Insert Buffer) 两次写(Double Write) 自适应哈希索引(Adaptive Hash Index...由上图可以看出,tablespace由segment组成,segment由extend组成,extend由page组成,page由row组成 在MySQL中默认会有一个共享表空间ibdata1,如果设置了...)来存放数据,当这些页使用完成以后,才是32+64个连续页的申请 页是innodb磁盘管理的最小单位,默认大小是16K 常见的页有:数据页,undo页,系统页,事务数据页等 数据是按行存放的...缓冲池通常是通过LRU算法进行管理,同时还加入midpoint位置,新读取的页,将不会放到链表头端,而是放到midpoint的位置,默认配置下,该位置位于5/8处 参考: 高性能MySQL 第3版 MySQL...技术内幕-InnoDB存储引擎 第2版

    1.5K40
    领券