首页
学习
活动
专区
圈层
工具
发布

mysql中除了myisam

MySQL是一种广泛使用的关系型数据库管理系统(RDBMS),它支持多种存储引擎,每种存储引擎都有其特定的优势和适用场景。除了MyISAM之外,MySQL还支持多种其他存储引擎,包括但不限于InnoDB、Memory、Archive、NDB Cluster等。

InnoDB

优势:

  • 事务支持: InnoDB是MySQL的默认存储引擎,它支持ACID兼容的事务。
  • 行级锁定: 提供行级锁定机制,适合高并发读写操作。
  • 外键支持: 支持外键约束,有助于维护数据的完整性。
  • 崩溃恢复: 提供崩溃恢复功能,保证数据的可靠性。

应用场景:

  • 适用于需要高事务安全性、高并发读写的应用场景,如电子商务网站、金融系统等。

Memory

优势:

  • 速度: 数据存储在内存中,访问速度非常快。
  • 临时表: 可以用作临时表,适合存储临时数据。

应用场景:

  • 适用于临时数据存储,如临时计算表、会话数据等。

Archive

优势:

  • 压缩: 支持数据压缩,节省存储空间。
  • 归档: 适合长期存储不常访问的数据。

应用场景:

  • 适用于日志归档、历史数据存储等。

NDB Cluster

优势:

  • 分布式: 支持分布式存储和处理,提供高可用性和数据冗余。
  • 实时性能: 适合需要实时处理大量数据的应用。

应用场景:

  • 适用于需要高可用性和实时数据处理的场景,如在线游戏、实时分析等。

遇到的问题及解决方法

问题:为什么InnoDB比MyISAM慢?

原因: MyISAM不支持事务和行级锁定,它使用表级锁定,这在高并发写操作时可能导致性能瓶颈。而InnoDB虽然支持事务和行级锁定,但这些特性在某些情况下可能会增加额外的开销。

解决方法:

  • 根据应用的需求选择合适的存储引擎。
  • 对InnoDB表进行优化,比如合理设置索引、调整缓冲池大小等。
  • 使用读写分离、分库分表等架构优化手段。

问题:如何选择合适的存储引擎?

解决方法:

  • 分析应用的需求,比如是否需要事务支持、是否需要高并发读写、数据是否需要长期保存等。
  • 考虑数据的安全性和完整性要求。
  • 根据实际性能测试结果选择最合适的存储引擎。

在选择存储引擎时,需要综合考虑应用的具体需求和性能要求,以及每种存储引擎的特性和限制。通过合理的配置和优化,可以充分发挥MySQL的性能优势,满足不同的应用场景。

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

相关·内容

MySQL中Myisam、InnoDB碎片优化

起因:查看线上数据库中Table Information时发现有一个日志表数据大小和索引大小有915M,但实际行数只有92行。该表需要频繁插入并且会定时去删掉旧的记录。...表类型为Myisam,已建立一个索引,所以应该是产生了大量碎片,使用 Optimize table 表名 优化后大小变为2.19M,少了很多, 同时可以看出该表上的索引建的多余,因为插入操作比查询操作要多很多...借此延伸下MYSQL中Myisam、InnoDB碎片优化方式: Myisam清理碎片 OPTIMIZE TABLE table_name InnoDB碎片优化 if you frequently delete...什么是mysql碎片?怎样知道表的碎片有多大呢?...,这样肯定会对程序的运行效率造成很大影响.比较好的方式就是做个 Script,定期检查mysql中information_schema.TABLES字段,查看 DATA_FREE 字段,大于0话,就表示有碎片

1.8K10
  • MySQL Innodb和Myisam

    ,例如磁盘驱动器、SSD 或 RAID 阵列 存储设备中的电池后备缓存 用于运行 MySQL 的操作系统,特别是它对fsync()系统调用的支持 不间断电源 (UPS) 保护运行 MySQL 服务器和存储...2、.frm 文件 MySQL 将表的数据字典信息存储在数据库目录中的 .frm 文件中。与其他 MySQL 存储引擎不同, InnoDB它还在系统表空间内自己的内部数据字典中对有关表的信息进行编码。...在SQL标准中,该隔离级别消除了不可重复读,但是还存在幻象读 SERIALIZABLE 一个个事务排成序列的形式。事务一个挨一个执行,等待前一个事务执行完,后面的事务才可以顺序执行。...除了长度小于4的字符串列之外,所有字符串列都是动态的。 每行前面都有一个位图,指示哪些列包含空字符串(对于字符串列)或零(对于数字列) NULL列在行中需要额外的空间来记录它们的值是否为NULL。...,仍然可能会损坏表: mysqld的进程在写中间被杀害 发生意外的计算机关机 硬件故障 正在使用外部程序(例如 myisamchk)来修改同时由服务器修改的表 MySQL 或MyISAM 代码中的软件错误

    2.9K20

    Mysql存储引擎中InnoDB与Myisam的区别

    事务处理innodb 支持事务功能,myisam 不支持。 Myisam 的执行速度更快,性能更好。...2. select ,update ,insert ,delete 操作MyISAM:如果执行大量的SELECT,MyISAM是更好的选择 InnoDB:如果你的数据执行大量的INSERT或UPDATE...查询表的行数不同MyISAM:select count(*) from table,MyISAM只要简单的读出保存好的行数,注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的...InnoDB : InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行 5....物理结构不同MyISAM :每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。 .frm文件存储表定义。

    1.6K50

    MySQL中InnoDB和MyISAM引擎的区别

    MySQL中InnoDB和MyISAM引擎的区别 MyISAM的结构 InnoDB 支持事务,MyISAM 不支持事务。 InnoDB 支持外键,而 MyISAM 不支持。...而MyISAM 用一个变量保存了整个表的行数。 表锁差异 InnoDB 最小的锁粒度是行锁,MyISAM 最小的锁粒度是表锁。...存储结构 MyISAM:每个MyISAM在磁盘上存储成三个文件。分别为:表定义文件、数据文件、索引文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。...InnoDB:所有的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文件),InnoDB表的大小只受限于操作系统文件的大小,一般为2GB。...索引差异 InnoDB 是聚集索引,MyISAM 是非聚集索引。

    84820

    MySQL中MyISAM与InnoDB存储的区别

    一 MyISAM 1.1 MyISAM简介 MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的 ISAM (Indexed Sequential Access Method:有索引的顺序访问方法...不过,5.5版本之后,MySQL引入了InnoDB(另一种数据库引擎)。...如果你的数据量很大(MyISAM支持压缩特性可以减少磁盘的空间占用),而且不需要支持事务时,MyISAM是最好的选择。 MySQL默认采用的是MyISAM。...因为MyISAM内置了一个计数器,count(*)时它直接从计数器中读,而InnoDB必须扫描全表。...AUTO_INCREMENT值可用ALTER TABLE或myisamch来重置 对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引

    1.9K10

    MySQL 中 MyISAM 中的查询为什么比 InnoDB 快?

    为什么 MyisAM 查询快? ? 关于,这个问题,我网上看了很多答案。大多内容都雷同,但是我要强调的是,并不是说 MYISAM 一定比 InnoDB 的 select 快。 其实呢?...MyISAM 适合读多,并发少的场景;这个问题要分场景来看。不同的场景,还真不能说 MyISAM 比 InnoDB 中的查询快!...MyIsam 则非聚集型索引,myisam 存储会有两个文件,一个是索引文件,另外一个是数据文件,其中索引文件中的索引指向数据文件中的表数据。...当有聚簇索引时,它的索引实际放在叶子页中。 ? 结合上图,可以看出:INNODB 在做 SELECT 的时候,要维护的东西比 MYISAM 引擎多很多。 ?...MYISAM 不支持事务,也是它查询快的一个原因!

    10.6K51

    Mysql中MyISAM引擎和InnoDB引擎的比较

    结论 如果不清楚自己应该用什么引擎,那么请选择InnoDB,Mysql5.5+的版本默认引擎都是InnoDB,早期的Mysql版本默认的引擎是MyISAM ---- MyISAM 和 InnoDB的适用场景...---- 使用MySQL当然会接触到MySQL的存储引擎,在新建数据库和新建数据表的时候都会看到。 MySQL默认的存储引擎是MyISAM,其他常用的就是InnoDB了。...表可以和其他字段一起建立联合索引 InnoDB中必须包含只有该字段的索引 SELECT MyISAM更优 INSERT InnoDB更优 UPDATE InnoDB更优 DELETE InnoDB...,一般为2GB 存储空间 MyISAM可被压缩,存储空间较小 InnoDB的表需要更多的内存和存储,它会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引 可移植性、备份及恢复 由于MyISAM...表可以和其他字段一起建立联合索引 InnoDB中必须包含只有该字段的索引 SELECT MyISAM更优 INSERT InnoDB更优 UPDATE InnoDB更优 DELETE

    2.2K60

    MySQL 中InnoDB与MyISAM的区别是什么?

    专栏持续更新中:MySQL详解 前言 许多同学都把 MySQL 作为自己的数据库,但是可能用过最多的就是 SQL 语句,以及一些 ORM 的写法,而对底层的实现了解甚少,比如上述问题中,InnoDB...其实 InnoDB 和 MyISAM 是 MySQL 的两个「存储引擎」。...在 MyISAM 中,主索引和辅助索引(Secondary key)在结构上没有任何区别: MyISAM 中索引检索的算法为首先按照 B+Tree 搜索算法搜索索引,如果指定的 Key 存在,则取出其...如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询意外,还包含很多的更新、删除操作,那么InnoDB存储引擎是比较合适的选择。...InnoDB存储引擎除了有效的降低由于删除和更新导致的锁定, 还可以确保事务的完整提交和回滚,对于类似于计费系统或者财务系统等对数据准确性要求比较高的系统,InnoDB是最合适的选择。

    1.5K11

    【DB应用】MySQL: InnoDB OR MyISAM?

    在SQL查询中,你可以自由地将InnoDB类型的表与其它MySQL的表的类型混合起来,甚至在同一个查询中也可以混合。 InnoDB是为处理巨大数据量时的最大性能设计。...InnoDB存储引擎被完全与MySQL服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。...这与MyISAM表不同,比如在MyISAM表中每个表被存在分离的文件中。InnoDB 表可以是任何尺寸,即使在文件尺寸被限制为2GB的操作系统上。...InnoDB默认地被包含在MySQL二进制分发中。Windows Essentials installer使InnoDB成为Windows上MySQL的默认表。...InnoDB和MyISAM的区别 MyISAM是MySQL中默认的存储引擎,一般来说不是有太多人关心这个东西。

    1.4K50

    MySQL存储引擎 MyISAM 介绍

    MyISAM是MySQL 默认存储引擎,它不支持事务,外键。但访问速度快,对事务完整性没有要求或者以select,insert 为主的应用基本上都可以使用这个引擎。...检查表的健康状态   表可能会损坏,原因多种多样,check table对MYISAM和InnoDB表都有作用,如检查有异常使用(repair table表名;)来修复。...MYISAM表3种不同的存储格式   3.1 静态(固定长度)表, 动态表, 压缩表。 其中静态表是默认的存储格式,字段都是非变长字段,每个记录都是固定长度。...CREATE TABLE Myisam_char (NAME CHAR(10)) ENGINE=MYISAM; INSERT INTO Myisam_char VALUES('abcde'),('abcde...3.2 动态表中包含变长字段,记录不是固定长度的,优势是占用的空间相对比较小,但频繁的更新删除记录会产生碎片,需要定期optimize table或myisamchk -r命令,出现故障时恢复相对比较困难

    1.4K20

    MySQL中MyISAM引擎与InnoDB引擎性能简单测试

    MySQL存储引擎包括处理事务安全表的引擎和处理非事务安全表的引擎:· MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。...MyISAM在所有MySQL配置里被支持,它是默认的存储引擎,除非你配置MySQL默认使用另外一个引擎。 ·MEMORY存储引擎提供“内存中”表。...MERGE存储引擎允许集合将被处理同样的MyISAM表作为一个单独的表。就像MyISAM一样,MEMORY和MERGE存储引擎处理非事务表,这两个引擎也都被默认包含在MySQL中。...这个引擎的目的是服务,在MySQL源代码中的一个例子,它演示说明如何开始编写新存储引擎。同样,它的主要兴趣是对开发者。"...强很多,当然,相应的在my.cnf中的配置也是比较关键的,良好的配置,能够有效的加速你的应用。

    89020

    MYSQL 浅谈MyISAM 存储引擎

    介绍        mysql中用的最多存储引擎就是innodb和myisam。...做为Mysql的默认存储引擎,myisam值得我们学习一下,以下是我对《高性能MYSQL》书中提到的myisam的理解,请大家多多指教。  ...>> 下面请看innodb中的事务操作 ? > 存储结构:数据文件(.MYD),索引文件(.MYI)和结构文件(.frm)    >> 特点:可以在不同服务器上拷贝数据文件和索引文件。 ?...MYISAM 默认把DELAY_KEY_WRITE开启, 整个选项是MYISAM引擎独有的。 ? 注意:在查询结束后,不会将索引的改变数据写入磁盘,而是改变内存中的索引数据。...而myisam在写库操作的时候会产生排他锁,如果写操作一直占用的话,那么其他连接请求一直就处于等待中,从而造成堵塞,甚至能把服务器dang掉。 参考文件:《高性能MYSQL》

    2.3K30

    MYSQL-数据引擎(MyISAM)

    2.MyISAM介绍 这是 MySQL 5.5 之前的默认引擎,现在已不推荐在新项目中使用,但在一些旧系统中仍能看到。 核心特性: ❌ 不支持事务:无法回滚操作。 ❌ 不支持外键。...数据仓库中的只读维度表(但现在有更好的选择)。 文件结构: .frm:存储表结构。 .MYD (MYData):存储数据。 .MYI (MYIndex):存储索引。...#这里就是后面创建的MyISAM表 -rw-r----- 1 mysql mysql 8672 Sep 16 21:35 myisam_table.frm -rw-r----- 1 mysql mysql...0 Sep 16 21:35 myisam_table.MYD -rw-r----- 1 mysql mysql 1024 Sep 16 21:35 myisam_table.MYI 3...Memory(内存引擎) 核心特性: 所有数据存储在内存中:速度极快。 表级锁:并发性能一般。 不支持 TEXT/BLOB 类型:因为内存空间有限。

    47510

    MySQL存储引擎MyISAM与InnoDB

    MySQL支持插件式的表存储引擎,这种独有的插件式体系架构,让存储引擎有了依赖应用的多样性。其中较为知名的存储引擎为MyISAM与InnoDB....MySQL系统中,存储引擎处于文件系统之上,在数据保存到数据文件之前会先传输到存储引擎,然后按照各个存储引擎的存储格式进行数据存储。...使用这种存储引擎的主要优点在于,仅仅需要提供特殊应用的特性即可;数据库中的系统开销较小,更具有有效和高效的数据库性能。...3、数据库在读写的过程中相互阻塞: 在数据写入的过程中阻塞用户对数据的读取; 在数据读取的过程中阻塞用户写入数据; 4、可以通过key_buffer_size来设置缓存索引,提高访问的性能...yum install perl-DBI perl-DBD-MySQL -y //安装操作运行库 默认情况下只能将已存在的InnoDB的存储引擎更改为MyISAM形式,若需要反过来更改需要更改命令执行脚本

    1.2K20

    MySQL 存储引擎 MyISAM 与 InnoDB 区别

    存储引擎 Storage engine:MySQL 中的数据、索引以及其他对象是如何存储的,是一套文件系统的实现。...“草稿”就可以删除了 通过上面3个特点我们可以看出,在形成“正稿”之前,“草稿”是不会被删除的;同时,“草稿”的空间是可以被循环利用的;最后,只要“草稿”在,我们一定能写出“正稿”。...• MyIASM 引擎(原本Mysql 的默认引擎):不提供事务的支持,也不支持行级锁和外键。MyISAM使用的是表级锁,也就意味着在对表中的数据进行修改时,需要对整个表进行加锁。...MEMORY 引擎:所有的数据都在内存中,数据的处理速度快,但是安全性不高 MyISAM 与 InnoDB 区别 MyISAM Innodb 存储结构 每张表被存放在三个文件: 所有的表都保存在同一个数据文...,一般为 2GB 存储空间 MyISAM 可被压缩,存储空间 InnoDB 的表需要更多的内存和 较小 存储,它会在主内存中建立其专 用的缓冲池用于高速缓冲数据和 索引 可移植性、备份及

    1.3K30

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

    如果要查“mysql”这个单词,我们肯定需要定位到m字母,然后从下往下找到y字母,再找到剩下的sql。...而对于二级索引,在 MyISAM存储引擎中以与上图同样的方式实现,可以看出MyISAM的索引文件仅仅保存数据记录的地址。...比如全文索引一般在CHAR、VARCHAR或TEXT列上创建,MyISAM表支持而INNODB表不支持,常见主要针对文本进行索引。同时MySQL高并发需要事务场景时,只能使用INNODB表。...3、该如何选用两个存储引擎呢 此处参考链接:MySQL中MyISAM与InnoDB区别及选择 因为MyISAM相对简单所以在效率上要优于InnoDB.如果系统读多,写少。对原子性要求低。...五、参考资料 1、由浅入深理解InnoDB的索引实现(1): 2、由浅入深理解InnoDB的索引实现(2): 3、关于MyISAM与InnoDB的讲解: 4、关于什么是索引: 5、mysql优化——-Myisam

    1.3K60

    【数据库复习】Mysql 中 MyISAM 和 InnoDB 的区别有哪些?

    区别: InnoDB 支持事务,MyISAM 不支持事务。这是 MySQL 将默认存储引擎从 MyISAM 变成 InnoDB 的重要原因之一; InnoDB 支持外键,而 MyISAM 不支持。...对一个包含外键的 InnoDB 表转为 MYISAM 会失败; InnoDB 是聚集索引,MyISAM 是非聚集索引。...而MyISAM 用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快; InnoDB 最小的锁粒度是行锁,MyISAM 最小的锁粒度是表锁。...这也是 MySQL 将默认存储引擎从 MyISAM 变成 InnoDB 的重要原因之一; 如何选择: 是否要支持事务,如果要请选择 InnoDB,如果不需要可以考虑 MyISAM; 如果表中绝大多数都只是读查询...系统奔溃后,MyISAM恢复起来更困难,能否接受,不能接受就选 InnoDB; MySQL5.5版本开始Innodb已经成为Mysql的默认引擎(之前是MyISAM),说明其优势是有目共睹的。

    94940
    领券