达州市住房和城乡建设局网站,怎么创造自己的公众号,长春火车站到机场怎么走,seo百度刷排名MySQL引擎就是指表的类型以及表在计算机上的存储方式。 MySQL数据库及其分支版本主要的存储引擎有三种#xff0c;分别是 InnoDB、MyISAM、 Memory#xff0c;还有一些其他的#xff0c;CSV、Blackhole等#xff0c;比较少见#xff0c;可以使用SHOW ENGINES语句来查看。结…MySQL引擎就是指表的类型以及表在计算机上的存储方式。 MySQL数据库及其分支版本主要的存储引擎有三种分别是 InnoDB、MyISAM、 Memory还有一些其他的CSV、Blackhole等比较少见可以使用SHOW ENGINES语句来查看。结果如下 在Support列中YES表示当前版本支持这个存储引擎DEFAULT表示该引擎是默认的引擎我的这个MySQL默认是InnoDB大家可以查下自己的数据库也是InnoDB。 存储引擎的概念是MySQL的特色使用的是一个可插拔存储引擎架构能够在运行的时候动态加载或者卸载这些存储引擎。不同的存储引擎决定了MySQL数据库中的表可以用不同的方式来存储。
InnoDB存储引擎
InnoDB是事务型数据库的首选引擎支持事务ACID简单地说就是支持事务完整性、一致性。InnoDB支持行级锁。行级锁可以在最大程度上支持并发以及类似Oracle的一致性读、多用户并发。InnoDB是为处理巨大数据量的最大性能设计InnoDB存储引擎完全与MySQL服务器整合InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。InnoDB支持外键完整性约束存储表中的数据时每张表的存储都按照主键顺序存放如果没有显式在表定义时指定主键InnoDB会为每一行生成一个6字节的ROWID并以此作为主键。InnoDB支持崩溃数据自修复。InnoDB存储引擎中就是依靠redolog来保证的。当数据库异常崩溃后数据库重新启动时会根据redolog进行数据恢复保证数据库恢复到崩溃前的状态。
MyISAM存储引擎
MyISAM存储引擎不支持事务所以对事务有要求的业务场景不能使用。其锁定机制是表级索引虽然可以让锁定的实现成本很小但是也同时大大降低了其并发性能。不仅会在写入的时候阻塞读取MyISAM还会在读取的时候阻塞写入但读本身并不会阻塞另外的读。只会缓存索引MyISAM可以通过key_buffer缓存以大大提高访问性能减少磁盘I/O但是这个缓冲区只会缓存索引而不会缓存数据。适用于不需要事务支持不支持、并发相对较低锁定机制问题、数据修改相对较少阻塞问题、以读为主这类场景。
MEMORY存储引擎
MEMORY存储引擎是MySQL中的一类特殊存储引擎使用存储在内存中的内容来创建表而且所有数据也放在内存中。
每个基于MEMORY存储引擎的表实际对应一个磁盘文件。该文件的文件名与表名相同类型为frm类型。该文件中只存储表的结构数据文件则存储在内存中。MEMORY默认使用哈希索引速度比使用B型树索引快。如果想用B型树索引可以在创建索引时指定。MEMORY存储引擎是把数据存到内存中如果内存出现异常就会影响数据。如果重启或者关机那么所有数据都会消失。 在实际工作中选择一个合适的存储引擎是比较复杂的问题。每种存储引擎都有自己的优缺点不能笼统地说谁比谁好。如果需要对事务的完整性要求比较高比如银行要求实现并发控制比如售票那么选择InnoDB有很大的优势。如果表主要是用于插入记录和读出记录那么选择MyISAM能实现处理高效率。如果需要很快的读写速度对数据的安全性要求较低可以选择MEMORY它对表的大小有要求不能建立太大的表。
修改存储引擎
明白了这些如果有些场景需要优化数据库就得修改一下存储引擎那看下怎么修改
SHOW TABLE STATUS可以看到当前的表使用的是那种引擎 可以使用where条件找到要修改的表的信息。 然后使用这条sql去执行
ALTER TABLE tablename ENGINEMEMORY执行完再回查一下确认执行成功。 MySQL的逻辑结构