MySQL存储引擎认识

存储引擎是MySQL的一大特色,学习MySQL必须要了解它,知其各种engines的差异,怎样正确的选择与使用之。因此简要介之。

1. 查看系统所支持的引擎类型,如截图中的命令。

2. 设定系统使用一个指定的存储引擎

 

有很多方法指定一个要使用的存储引擎。比较简单的方法是在MySQL配置文件中my.ini或my.cnf中设置一个默认的引擎类型,比如使用default_storage_engine=innodb 选项;或在启动数据库服务器时在命令行后面加上--default-storage-engine=innodb或--default-table-type=innodb选项。

较灵活的方式是在MySQL客户端连接MySQL服务器时时指定使用的存储引擎,比如mysql -h192.168.1.88 -uroot -p123456 --default-storage-engine=innodb。

比较实用的方式是改变现有的表使用的存储引擎,比如 alter table mytable ENGINE=MyISAM;但是千万注意:这种方式修改表类型的时候,由于引擎不支持同样的索引、字段类型或者表的大小等问题,可能造成数据丢失。如果指定一个在当前的数据库中不存在的一个存储引擎,那么就会创建一个MyISAM(默认的)类型的表。

3. 存储引擎的特性简介

a.  InnoDB是唯一的事务安全表,有提交、回滚和崩溃恢复能力;它支持外键;但是它的锁是行锁,使得加锁时,资源占用相对高,而且容易发生死锁。另外InnoDB的写效率差一些,并且会占用更多的磁盘空间以保留数据和索引。InnoDB存储方式为两种:一是使用共享表空间存储,二是使用独立表空间。InnoDB默认情况下的事务是打开的,就是说每插入一条记录时候,InnoDB类型的表都会把它当作一个单独的事务来处理。所以如果我们插入了10000条记录,而且没有将事务关闭,那么InnoDB类型的表会把它当作10000个事务来处理,此时插入的总时间是很多的,这个时候一定要首先把事务关掉再插入(set autocommit=0),这样的速度就很快了。

b. MyISAM不支持事务、也不支持外键,但其访问速度快,对事务完整性没有要求。它的锁是表锁,占用资源低,也不会发生死锁。每一个MyISAM表都对应于硬盘上的三个文件。这三个文件有一样的文件名,但是有不同的扩展名以指示其类型用途:

.frm文件保存表的定义,但是这个文件并不是MyISAM引擎的一部分,而是服务器的一部分;

.MYD保存表的数据;

.MYI是表的索引文件。

c.  MEMORY存储引擎将表的数据存储在内存中,每个MEMORY表只实际对应一个.frm磁盘文件,里面是表的定义。MEMORY类型的表访问非常得快,因为它的数据是放在内存中的,并且默认使用HASH索引。但是一旦服务关闭,表中的数据就会丢失掉。

d.  MERGE存储引擎是一组MyISAM表的组合,它能将你指定的一堆表MyISAM表在逻辑上组合成一张表,前提是这些MyISAM表必须结构完全相同。MERGE表本身没有数据,对MERGE类型的表进行查询、更新、删除的操作,就是对内部的MyISAM表进行的。

实际业务中InnoDB与MyISAM用得相对的多些,选择那个中engine需要根据实际情况而定。以上是我对MySQL存储引擎的简单的认识。还有很多存储引擎,只是不常用。这里就不做介绍了。

REMARK: IT随笔,若转载请注明出去,谢谢!

Author:  TerryXia

时间: 2024-11-02 14:12:34

MySQL存储引擎认识的相关文章

mysql存储引擎

mysql的物理文件组成包括错误日志,查询日志,慢查询日志,事务日志,二进制日志. 日志文件中记录mysql数据库运行期间发生的变化,记录mysql数据库的客户端连接状况,sql语句的执行情况和错误信息. mysql的逻辑结构可以看成是二层架构,第一层叫做SQL layes,数据库系统处理底层数据库之前的所有工作都在这一层完成,包括权限判断,sql解析,执行计划优化,query cache的处理等.第二层就是存储引擎层,叫做storage engine layes,也是底层数据存取操作实现部分,

mysql 存储引擎 myisam innodb 区别

虽然MySQL里的存储引擎不只是MyISAM与InnoDB这两个,但常用的就是它俩了.可能有站长并未注意过MySQL的存储引擎,其实存储引擎也是数据库设计里的一大重要点,那么博客系统应该使用哪种存储引擎呢?下面我们分别来看两种存储引擎的区别. MySQL存储引擎MyISAM与InnoDB的区别 一.InnoDB支持事务,MyISAM不支持,这一点是非常之重要.事务是一种高级的处理方式,如在一些列增删改中只要哪个出错还可以回滚还原,而MyISAM就不可以了. 二.MyISAM适合查询以及插入为主的

五花八门的MySQL存储引擎,哪一盘是你的菜?

一.MYSQL中存储引擎分类及应用场合 MyISAM.InnoDB.MERGE.MEMORY(HEAP).BDB(BerkeleyDB).EXAMPLE.FEDERATED.ARCHIVE.CSV.BLACKHOLE. MySQL支持数个存储引擎作为对不同表的类型的处理器.MySQL存储引擎包括处理事务安全表的引擎和处理非事务安全表的引擎: 1.MyISAM管理非事务表 它提供高速存储和检索,以及全文搜索能力.MyISAM在所有MySQL配置里被支持,它是默认的存储引擎,除非你配置MySQL默认

MySQL存储引擎比较

MySQL常用的存储引擎为MyISAM.InnoDB.MEMORY.MERGE,其中InnoDB提供事务安全表,其他存储引擎都是非事务安全表. MyISAM是MySQL的默认存储引擎.MyISAM不支持事务.也不支持外键,但其访问速度快,对事务完整性没有要求. InnoDB存储引擎提供了具有提交.回滚和崩溃恢复能力的事务安全.但是比起MyISAM存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引. MEMORY存储引擎使用存在内存中的内容来创建表.每个MEMORY表

MySQl学习-——Mysql体系结构与Mysql存储引擎

Mysql体系结构与Mysql存储引擎 Mysql体系结构 mysql体系结构图: 1)        Connectors:指的是不同语言中与SQL的交互 max_connections 就是整个MySQL实例的最大连接数限制 max_user_connections 是单个用户的最大连接数,这里未指明是哪个用户,是任意一个用户. 2)        Management Serveices & Utilities:系统管理和控制工具 备份和恢复的安全性,复制,集群,管理,配置,迁移和元数据

MySQL存储引擎比较(转)

MySQL常用的存储引擎为MyISAM.InnoDB.MEMORY.MERGE,其中InnoDB提供事务安全表,其他存储引擎都是非事务安全表. MyISAM是MySQL的默认存储引擎.MyISAM不支持事务.也不支持外键,但其访问速度快,对事务完整性没有要求. InnoDB存储引擎提供了具有提交.回滚和崩溃恢复能力的事务安全.但是比起MyISAM存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引. MEMORY存储引擎使用存在内存中的内容来创建表.每个MEMORY表

mysql 存储引擎的选择你会吗?

mysql 存储引擎的选择你会吗?,布布扣,bubuko.com

第 3 章 MySQL 存储引擎简介

3.1MySQL 存储引擎概述 到后来,MySQL 意识到需要更改架构,将前端的业务逻辑和后端数据存储以清晰的层次结构拆分开的同时,对ISAM 做了功能上面的扩展和代码的重构,这就是MyISAM存储引擎的由来. MySQL 的插件式存储引擎主要包括MyISAM,Innodb,NDB Cluster,Maria,Falcon, Memory,Archive,Merge,Federated 等,其中最著名而且使用最为广泛的MyISAM 和Innodb两种存储引擎.MyISAM 是MySQL 最早的I

mysql 存储引擎对比

mysql 存储引擎:存储引擎也通常被称作"表类型" 修改原始hellodb.sql存储引擎为InnoDB  sed -i '[email protected][email protected][email protected]' /home/hellodb.sql 导入修改后的sql文件  mysql -uroot -p  mydb < /home/hellodb.sql 查看表引擎,状态  mysql> show engines;    mysql> show t

mysql存储引擎的种类与区别(innodb与myisam)

查找数据库的存数引擎: show engines show variables like '%storage_engine%' 更改数据库的引擎更改配置文件/etc/my.cnf 修改default-storage-engine=InnoDB(需要更改的存储引擎),然后重启数据库 service mysqld restart alter table engine=innodb 存储引擎说白了就是如何存储数据.如何为存储的数据建立索引和如何更新.查询数据等技术的实现方法.因为在关系数据库中数据的存