修改mysql数据引擎的方法- 提高数据库性能

前言:同学告我说,他为了能使得数据查询变得快一点,修改的数据引擎,故查询一下,总结一下。

登录mysql后,查看当前数据库支持的引擎和默认的数据库引擎,使用下面命令:

mysql>show engines;

+--------------------+---------+-------------------------------------------------------------------------------------------------------+--------------+------+-------------------+
| Engine             | Support | Comment                                                                                               | Transactions | XA   | Savepoints(保存点) |
+--------------------+---------+-------------------------------------------------------------------------------------------------------+--------------+------+-------------------+
| FEDERATED          | NO      | Federated MySQL storage engine        联邦MySQL存储引擎                                                 | NULL         | NULL | NULL              |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables 相同的MyISAM表集合                                                | NO           | NO   | NO                |
| MyISAM             | YES     | MyISAM storage engine                  MyISAM存储引擎                                                   | NO           | NO   | NO               |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) 空存储引擎(任何写入它的内容都消失了)       | NO           | NO   | NO               |
| CSV                | YES     | CSV storage engine                     CSV存储引擎                       			        | NO           | NO   | NO               |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables 基于散列的,存储在内存中,用于临时表              | NO           | NO   | NO               |
| ARCHIVE            | YES     | Archive storage engine                 档案存储引擎                                                      | NO           | NO   | NO              |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys 支持事务、行级锁定和外键。                      | YES          | YES  | YES             |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                     性能模式                                                          | NO           | NO   | NO              |
+--------------------+---------+---------------------------------------------------------------------------------------------------------+--------------+------+-----------------+
9 rows in set

修改命令:(对单个表修改)  

alter table user ENGINE =MyISAM;

修改了好吗?

查询资料:

1. mysql 中 myisam innodb 的区别有哪些?

MyISAM

InnoDB

构成上的区别:

每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。

.frm文件存储表定义。

数据文件的扩展名为.MYD (MYData)。

索引文件的扩展名是.MYI (MYIndex)。

基于磁盘的资源是InnoDB表空间数据文件和它的日志文件,InnoDB 表的大小只受限于操作系统文件的大小,一般为 2GB
事务处理上方面:

MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持

InnoDB提供事务支持事务,外部键等高级数据库功能

SELECT UPDATE,INSERTDelete操作
如果执行大量的SELECT,MyISAM是更好的选择

1.如果你的数据执行大量的INSERTUPDATE,出于性能方面的考虑,应该使用InnoDB表

2.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。

3.LOAD TABLE FROM MASTER 操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用AUTO_INCREMENT的操作  每表一个AUTO_INCREMEN列的内部处理。

(AUTO_INCREMENT值可用ALTER TABLE或myisamch来重置)

(对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引,更好和更快的auto_increment处理;)

(如果你为一个表指定AUTO_INCREMENT列,在数据词典里的InnoDB表句柄包含一个名为自动增长计数器的计数器,它被用在为该列赋新值。)

4. InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务;

5. InnoDB支持外键,而MyISAM不支持。对一个包含外键的InnoDB表转为MYISAM会失败;

6. InnoDB是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该过大,因为主键太大,其他索引也都会很大。而MyISAM是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的。

7. InnoDB不保存表的具体行数,执行select count(*) from table时需要全表扫描。而MyISAM用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快;

8. Innodb不支持全文索引,而MyISAM支持全文索引,查询效率上MyISAM要高;

如何选择:

1. 是否要支持事务,如果要请选择innodb,如果不需要可以考虑MyISAM;

2. 如果表中绝大多数都只是读查询,可以考虑MyISAM,如果既有读写也挺频繁,请使用InnoDB。

3. 系统奔溃后,MyISAM恢复起来更困难,能否接受;

4. MySQL5.5版本开始Innodb已经成为Mysql的默认引擎(之前是MyISAM),说明其优势是有目共睹的,如果你不知道用什么,那就用InnoDB,至少不会差。

(参考:https://www.zhihu.com/question/20596402/answer/211492971)

时间: 2024-11-06 09:05:26

修改mysql数据引擎的方法- 提高数据库性能的相关文章

mysql数据引擎的概念介绍

什么是数据库引擎?每种数据库的数据格式,内部实现机制都是不同的,要利用一种开发工具访问一种数据库,就必须通过一种中介程序,这种开发工具与数据库之间的中介程序就叫数据库引擎. 如果你是个赛车手并且按一下按钮就能够立即更换引擎而不需要把车开到车库里去换,那会是怎么感觉呢?MySQL数据库为开发人员所做的就好像是按按钮换引擎:它让你选择数据库引擎,并给你一条简单的途径来切换它. MySQL 的自带引擎肯定是够用了,但是在有些情况下,其他的引擎可能要比手头所用更适合完成任务.如果愿意的话,你甚至可以使用

修改mysql默认字符集的方法

mysql默认字符集能否进行修改呢?答案是肯定的,下面就将教您两种修改mysql默认字符集的方法,希望对您学习mysql默认字符集方面能有所启迪. (1) 最简单的修改方法,就是修改mysql的my.ini文件中的字符集键值, 如 default-character-set = utf8  character_set_server = utf8 修改完后,重启mysql的服务,service mysql restart 使用 mysql> SHOW VARIABLES LIKE 'charact

MySQL数据迁移到MSSQL-以小米数据库为例-测试828W最快可达到2分11秒

这里采用.NET Framework 4.0以上版本中新出现的 ConcurrentQueue<T> 类 MSDN是这样描述的: ConcurrentQueue<T> 类是一个线程安全的先进先出 (FIFO) 集合. ConcurrentQueue<T> 的所有公共且受保护的成员都是线程安全的,可从多个线程同时使用. 共采用两个线程,一个读一个写. ConcurrentQueue<T>的实现方法: (FIFO) 集合: ConcurrentQueue<

修改MySQL数据文件的位置

1:查看MySQL服务名称 2:管理员启动控制台 3:修改配置文件my.ini中数据文件的位置,[注]修改完成之后要把响应的数据文件从旧目录拷贝到新目录当中. 4:重新启动服务 5:登录数据库查看数据文件 修改MySQL数据文件的位置

MySql中启用InnoDB数据引擎的方法

1.存储引擎是什么? Mysql中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力.通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能.这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎(也称作表类型).MySql默认配置了许多不同的存储引擎,可以预先设置或者在MySql服务器中启用. 2.MYSQL支持的数据引擎 MyISAM:默认的MySQL插件式存储引擎,它是

修改mysql存储引擎备份数据库报错及解决方案

备份数据库报错 原因:由于监控服务器最近cpu负载比较高.(cpu4核心,负载2.7左右)感觉很奇怪,因为别的服务器mysql占用的资源并不多,因此我首先优化了数据库的配置文件.cpu稍微下降了一点,但是没有特别明显的变化. 于是,从mysql的存储引擎和日志考虑,结果发现默认用的引擎是myisam.好吧.换成innodb,(由于事先我没备份,就在配置文件修改了引擎,因为日志除了二进制其他并没有开启.所以没动它.重启数据库. ok 早就听说这两个引擎,区别,看来性能差别真大啊! 好吧.备份数据库

15 MySQL数据导入导出方法与工具介绍之三

您可以看到MySQL有很多可以导入数据的方法,然而这些只是数据传输中的一半.另外的一般是从MySQL数据库中导出数据.有许多的原因我们需要导出数据.一个重要的原因是用于备份数据库.数据的造价常常是昂贵的,需要谨慎处理它们.经常地备份可以帮助防止宝贵数据地丢失:另外一个原因是,也许您希望导出数据来共享. 在这个信息技术不断成长的世界中,共享数据变得越来越常见. 比方说Macmillan USA维护护着一个将要出版的书籍的大型数据库.这个数据库在许多书店之间共享,这样他们就知道哪些书将会很快出版.医

18 MySQL数据导入导出方法与工具介绍之二

批处理是一种非交互式运行mysql程序的方法,如同您在mysql中使用的命令一样,你仍然将使用这些命令. 为了实现批处理,您重定向一个文件到mysql程序中,首先我们需要一个文本文件,这个文本文件包含有 与我们在mysql中输入的命令相同的文本.比如我们要插入一些数据,使用包含下面文本的文件(文件名为New_Data.sql,当然我们也可以取名为 New_Data.txt及任何其他的合法名字,并不一定要以后缀sql结尾):USE Meet_A_Geek;INSERT INTO Customers

mysql数据引擎

作为Java程序员,MySQL数据库大家平时应该都没少使用吧,对MySQL数据库的引擎应该也有所了解,这篇文章就让我详细的说说MySQL数据库的Innodb和MyIASM两种引擎以及其索引结构.也来巩固一下自己对这块知识的掌握. Innodb引擎 Innodb引擎提供了对数据库ACID事务的支持,并且实现了SQL标准的四种隔离级别,关于数据库事务与其隔离级别的内容请见数据库事务与其隔离级别这篇文章.该引擎还提供了行级锁和外键约束,它的设计目标是处理大容量数据库系统,它本身其实就是基于MySQL后