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

mysql 自动选择innodb

基础概念

MySQL 是一个流行的关系型数据库管理系统(RDBMS),它支持多种存储引擎,其中 InnoDB 是最常用的存储引擎之一。InnoDB 提供了事务安全(ACID兼容)的表,并且支持行级锁定和外键。

优势

  1. 事务支持:InnoDB 支持 ACID 事务,这对于需要保证数据一致性和完整性的应用至关重要。
  2. 行级锁定:与表级锁定相比,行级锁定可以减少锁定冲突,提高并发性能。
  3. 外键支持:InnoDB 支持外键约束,这有助于维护数据之间的关联性。
  4. 崩溃恢复:InnoDB 具有崩溃恢复能力,即使在系统崩溃的情况下也能保证数据的完整性。
  5. MVCC(多版本并发控制):InnoDB 使用 MVCC 来提高并发性能,允许多个事务同时读取同一行数据而不产生冲突。

类型

MySQL 的存储引擎类型包括:

  • InnoDB:默认的存储引擎,支持事务和行级锁定。
  • MyISAM:不支持事务,但读取速度快,适合读多写少的场景。
  • MEMORY:数据存储在内存中,速度非常快,但数据不会持久化。
  • ARCHIVE:适合存储大量不常访问的历史数据。

应用场景

InnoDB 适用于以下场景:

  • 需要事务支持的应用:如金融系统、订单处理系统等。
  • 高并发读写应用:如电子商务网站、社交媒体平台等。
  • 需要数据完整性和一致性的应用:如任何需要保证数据准确无误的应用。

自动选择 InnoDB

MySQL 默认情况下会自动选择 InnoDB 作为存储引擎,除非在创建表时明确指定了其他存储引擎。这是因为 InnoDB 提供了更好的性能和更多的功能。

遇到的问题及解决方法

问题:为什么我的 MySQL 表没有使用 InnoDB 存储引擎?

原因

  1. 在创建表时明确指定了其他存储引擎。
  2. MySQL 配置文件中可能设置了默认存储引擎为其他类型。

解决方法

  1. 检查表的创建语句,确保没有指定其他存储引擎。例如:
  2. 检查表的创建语句,确保没有指定其他存储引擎。例如:
  3. 检查 MySQL 配置文件(通常是 my.cnfmy.ini),确保 [mysqld] 部分有以下设置:
  4. 检查 MySQL 配置文件(通常是 my.cnfmy.ini),确保 [mysqld] 部分有以下设置:
  5. 如果需要更改现有表的存储引擎,可以使用以下 SQL 语句:
  6. 如果需要更改现有表的存储引擎,可以使用以下 SQL 语句:

参考链接

通过以上信息,您应该对 MySQL 自动选择 InnoDB 有了更深入的了解,并且知道如何处理相关的问题。

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

相关·内容

  • Mysql | innodb

    AVL 树和红黑树 二叉查找树存在不平衡问题,因此学者提出通过树节点的自动旋转和调整,让二叉树始终保持基本平衡的状态,就能保持二叉查找树的最佳查找性能了。...首先简单介绍红黑树,这是一颗会自动调整树形态的树结构,比如当二叉树处于一个不平衡状态时,红黑树就会自动左旋右旋节点以及节点变色,调整树的形态,使其保持基本的平衡状态(时间复杂度为 O(logn)),也就保证了查找效率不会明显减低...Innodb 创建表后生成的文件有: frm:创建表的语句 idb:表里面的数据+索引文件 较频繁的作为查询条件的字段应该创建索引; 唯一性太差的字段不适合单独创建索引,即使该字段频繁作为查询条件; 更新非常频繁的字段不适合创建索引

    93610

    MYSQL 8 innodb replicaset 怎么自动化部署,与手动切换 (不是innodb cluster)

    MYSQL 截止目前高可用的方式主要有传统的复制方式,MGR 也叫innodb cluster , 以及今天要说的 innodb replicatset。...实际上replicatset 就是复制方式的自动化部署以及切换的一个mysql的叫法,如果你要使用首先要把你的MYSQL 提高到 8.019版本以上,同时在安装完mysql后,你还需要安装 mysql...虽然高版本的 MYSQL 8.026 在安装上有点小问题,相信大部分同学都能解决,这里就不废话,假设你已经安装了两台 myql 8.026 和 mysql -shell的基础上,咱们开始安装 innodb...() 在键入命令后,后会给出提示是否进行创建新的用户,这里选择2 创建新的负责replicate 的用户并且给出密码, 整体的过程,全部为自动化,仅仅给出提示让你选择,修改一些必要的复制需要的参数。...基于上面的简单操作 ,整体MYSQL 在基于PAXOS 协议上的MYSQL INNODB CLUSTER 以外给了另一个传统意义上的复制功能自动化的选择,简化了DBA 复杂的劳动。

    1.2K20

    Mysql-InnoDB 系列】InnoDB 架构

    封面图片来自:mysql官方文档,8.0版本,InnoDB Architecture。 一 概述 ? 如上图所示,mysqlInnoDB存储引擎架构,包括了内存架构和磁盘架构两部分。...本章将阐述Mysql InnoDB的架构中的组成部分,并在后续系列文章中详细描述各部分的细节。...= '/external/directory'; 2-3 在外部通用表空间上建表 3、导入InnoDB表 4、移动或拷贝InnoDB表 5、将表从MyISAM转换为InnoDB 6、InnoDB中的自动增量处理...MySQL 8.0.20版本之前,双写缓冲区存储空间归属于InnoDB的系统表空间。MySQL 8.0.20开始,双写表空间存储区域放在了双写文件中。...在意外关闭之前未完成数据文件更新的修改,将在初始化期间和接受连接之前自动重放。 默认情况下,重做日志在磁盘上的物理标识是名为ib_logfile0 和 ib_logfile1的两个文件。

    1.2K10

    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...核心参数 innodb_buffer_pool_size 是mysql中最大的一块内存结构设置是物理内存50%-75% innodb_buffer_pool_chunk_size 它是一个分配单元大小...;ibdata2:512M:autoextend #设置共享表空间大小 后面是自动扩展 innodb_file_per_table 打开独立表空间 innodb_undo_tablespaces 打开独立...自动回收的机制 innodb_purge_rseg_truncate_frequency 触发自动回收条件 ,单位是检测次数 innodb_undo_directory undo日志的位置 io innodb_io_capacity

    1.3K41

    MySQL中MyISAM和InnoDB的索引方式以及区别与选择

    而使用自增字段作为主键则是一个很好的选择。...比如全文索引一般在CHAR、VARCHAR或TEXT列上创建,MyISAM表支持而INNODB表不支持,常见主要针对文本进行索引。同时MySQL高并发需要事务场景时,只能使用INNODB表。...3、该如何选用两个存储引擎呢 此处参考链接:MySQL中MyISAM与InnoDB区别及选择 因为MyISAM相对简单所以在效率上要优于InnoDB.如果系统读多,写少。对原子性要求低。...那么MyISAM最好的选择。且MyISAM恢复速度快。可直接用备份覆盖恢复。 如果系统读少,写多的时候,尤其是并发写入高的时候。InnoDB就是首选了。...五、参考资料 1、由浅入深理解InnoDB的索引实现(1): 2、由浅入深理解InnoDB的索引实现(2): 3、关于MyISAM与InnoDB的讲解: 4、关于什么是索引: 5、mysql优化——-Myisam

    68160

    MySQL中MyISAM和InnoDB的索引方式以及区别与选择

    而使用自增字段作为主键则是一个很好的选择。...比如全文索引一般在CHAR、VARCHAR或TEXT列上创建,MyISAM表支持而INNODB表不支持,常见主要针对文本进行索引。同时MySQL高并发需要事务场景时,只能使用INNODB表。...3、该如何选用两个存储引擎呢 此处参考链接:MySQL中MyISAM与InnoDB区别及选择 因为MyISAM相对简单所以在效率上要优于InnoDB.如果系统读多,写少。对原子性要求低。...那么MyISAM最好的选择。且MyISAM恢复速度快。可直接用备份覆盖恢复。 如果系统读少,写多的时候,尤其是并发写入高的时候。InnoDB就是首选了。...五、参考资料 1、由浅入深理解InnoDB的索引实现(1): 2、由浅入深理解InnoDB的索引实现(2): 3、关于MyISAM与InnoDB的讲解: 4、关于什么是索引: 5、mysql优化——-Myisam

    72420

    MySQL系列 | MySQLInnoDB

    03 MySQL架构 MySQL 从第一个版本发布到现在已经有了 20 多年的历史,在这么多年的发展和演变中,整个应用的体系结构变得越来越复杂: 最上层用于连接、线程处理的部分并不是 MySQL 『发明...05 如何存储表 MySQL 使用 InnoDB 存储表时,会将表的定义和数据索引等信息分开存储,其中前者存储在 .frm 文件中,后者存储在 .ibd 文件中,这一节就会对这两种不同的文件分别进行介绍...06 .frm 文件 无论在 MySQL选择了哪个存储引擎,所有的 MySQL 表都会在硬盘上创建一个 .frm 文件用来描述表的格式或者说定义;.frm 文件的格式在不同的平台上都是相同的。...当 InnoDB 存储数据时,它可以使用不同的行格式进行存储;MySQL 5.7 版本支持以下格式的行存储方式: Antelope 是 InnoDB 最开始支持的文件格式,它包含两种行格式 Compact...Records 就是整个页面中真正用于存放行记录的部分,而 Free Space 就是空余空间了,它是一个链表的数据结构,为了保证插入和删除的效率,整个页面并不会按照主键顺序对所有记录进行排序,它会自动从左侧向右寻找空白节点进行插入

    1.4K20

    MySQL Innodb和Myisam

    如果 InnoDB自动生成聚集索引,则该索引包含行 ID 值。否则,该 DB_ROW_ID列不会出现在任何索引中。 回滚段中的撤消日志分为插入和更新撤消日志。...当InnoDB将页读入缓冲池时,它最初将它插入到中点(旧子列表的头部)。可以读取页,因为它是用户启动的操作(例如 SQL 查询)所必需的,或者是由 自动执行的预读操作的一部分 InnoDB。...2、.frm 文件 MySQL 将表的数据字典信息存储在数据库目录中的 .frm 文件中。与其他 MySQL 存储引擎不同, InnoDB它还在系统表空间内自己的内部数据字典中对有关表的信息进行编码。...4、主键 选择主键的特征: 最重要的查询引用的列 永远不会留空的列 从不具有重复值的列 插入后很少更改值的列 5、查看 InnoDB 表属性 要查看InnoDB表的属性,执行 SHOW TABLE STATUS...是更好的选择 对INSERT或UPDATE有很好的支持;DELET时,InnoDB不会重新建立表,而是一行一行的删除 表的具体行数 MyISAM只要简单的读出保存好的行数,当count(*)语句包含 where

    1.7K20

    MySQL InnoDB Cluster 详解

    MySQL InnoDB Cluster是一个高可用的框架,它由下面这几个组件构成: MySQL Group Replication:提供DB的扩展、自动故障转移 MySQL Router:轻量级中间件...InnoDB Cluster目前已经实现了发展路线图的第一步——高可用性,将来的发展方向为自动读取扩展和自动写入扩展。最终实现如下图的最终目标: ?...MGR提供了高可用分布式MySQL数据库服务,它可以实现服务器自动故障转移,分布式容错能力,支持多主更新的架构,自动重配置(加入/移除节点,崩溃等等)并且可以自动侦测和处理冲突。...主从复制的替代选择-可以使用单主模式避免发生冲突检测,以替代传统的主从复制。 ? 上图是MGR的架构,里面包括: MySQL Group Replication插件 ?...那么应该选择使用哪种方式进行部署呢? 增量恢复: 至少一个成员可以提供给新节点相同的已处理的事务集。

    2.2K20

    MySQL InnoDB创建索引

    聚簇索引的创建方式一般有三种: 用户定义了主键,那么InnoDB依据主键创建聚簇索引 用户没有定义主键,那么InnoDB根据表上的第一个唯一非空的列创建聚簇索引 如果以上两条都不符合,那么InnoDB自动指定一个系统列作为聚簇索引...1.3 InnoDB系统列 InnoDB在创建表的时候,除了用户自定义的列之外,还会额外地增加几个隐藏的列,这些列在MySQL Server看来是不可见的,我们称之为系统列。...; step1: 无论如何,聚簇索引都是会在第一步产生的,这里我们没有定义主键,也,没有定义唯一非空列,所以只能让InnoDB自动创建聚簇索引。...2.2 重启后创建索引 MySQL重启后,内部索引对象丢失,需要在启动后重新创建相关的索引。MySQL重启后首先会将数据字典内的信息进行读取和初始化,然后根据数据字典的信息进行索引的创建。...还是以上文的表t为例,假设现在MySQL重启,如何在t上构建索引? step1: 创建聚簇索引 无论如何,聚簇索引都会第一个创建。

    5.7K30

    mysql常用存储引擎(InnoDB、MyISAM、MEMORY、MERGE、ARCHIVE)介绍与如何选择

    通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。     例如,如果你在研究大量的临时数据,你也许需要使用内存MySQL存储引擎。...,上图也看到了,InnoDB是默认的MySQL引擎。      ...InnoDB不创建目录,使用InnoDB时,MySQL将在MySQL数据目录下创建一个名为ibdata1的10MB大小的自动扩展数据文件,以及两个名为ib_logfile0和ib_logfile1的5MB...这要通过合并相邻被删除的块,以及若下一个块被删除,就扩展到下一块自动完成 每个MyISAM表最大索引数是64,这可以通过重新编译来改变。...4)如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的Memory引擎,MySQL中使用该引擎作为临时表,存放查询的中间结果。

    2.2K20

    MYSQL INNODB表压缩

    详细说明:https://dev.mysql.com/doc/refman/5.6/en/innodb-physical-record.html 压缩算法 压缩算法采用LZ77,在这个算法下,如果压缩效率好点的话...压缩方法 如果设置了ROW_FORMAT=COMPRESSED,那可以忽略key_block_size设置,这时默认的key_block_size为innodb_page_size值的一半,MYSQL默认设置...innodb_page_size=16k; 如果设置了key_block_size,那可以忽略ROW_FORMAT=COMPRESSED,这时压缩时自动打开的,key_block_size的值设置8或4...和INNODB_CMPMEM_RESET:innodb_buffer_pool中压缩页的信息; INNODB_CMP_PER_INDEX和INNODB_CMP_PER_INDEX_RESET:MYSQL5.7...= dynamic (Mysql5.7新加) 以下参数可能在未来版本中删除: innodb_file_format innodb_file_format_check innodb_file_format_max

    9.4K40

    mysql-innodb-锁

    兼容 不兼容 IX 兼容 兼容 不兼容 不兼容 S 兼容 不兼容 兼容 不兼容 X 不兼容 不兼容 不兼容 不兼容 锁的监控表 查询锁的情况:information_schema下 innodb_trx...事务表 innodb_locks锁表 innodb_lock_wait锁等待表 锁算法 3种锁算法 Record Lock     单行记录加锁 Gap Lock     ...来控制等待时间默认50s innodb_rollback_on_timeout设置超时时是否回滚,默认off,不回滚。...来控制等待时间默认50s 通常来说InnoDB存储引擎选择回滚undo量最小的事务 补充2-自增长与锁 自增长的列,必须是索引,且必须是索引的第一个列...Mysql5.1.22后,提供了轻量级互斥量,在内存中计算自增值提高性能 补充3-外键与锁 innodb外键自动加索引 插入或更新数据时,

    92230
    领券