修改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,INSERT,Delete操作
如果执行大量的SELECT,MyISAM是更好的选择
1.如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用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)
转载于:https://www.cnblogs.com/nucdy/p/7940523.html
修改mysql数据引擎的方法- 提高数据库性能相关推荐
- mysql修改工资字段_基于Linux的MySQL操作实例(修改表结构,MySQL索引,MySQL数据引擎)...
基于Linux的MySQL操作实例(修改表结构,MySQL索引,MySQL数据引擎) 前言 本篇是基于Linux下针对MySQL表结构的修改,MySQL索引的操作以及MySQL数据引擎的配置和说明. ...
- dos下设置mysql密码_MySQL数据库之dos或wamp下修改mysql密码的具体方法
本文主要向大家介绍了MySQL数据库之dos或wamp下修改mysql密码的具体方法 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 最近在纠结如何修改mysql的密码,终于搞定 ...
- 京东城市时空数据引擎JUST亮相中国数据库技术大会(附PPT链接)
受疫情影响,第十一届中国数据库技术大会(DTCC2020)从原定的5月份,推迟到了8月份,再推迟到了12月份.尽管如此,依然没有减退国人对数据库技术的热情.2020年12月21日-12月23日,北京国 ...
- explain mysql 权限_explain命令为什么可能会修改MySQL数据
explain命令为什么可能会修改MySQL数据,用户,函数,数据,可能会,权限 explain命令为什么可能会修改MySQL数据 易采站长站,站长之家为您整理了explain命令为什么可能会修改My ...
- mysql改原始密码mac_MAC版修改MySQL初始密码的方法
问题描述: 买了mac电脑,第一次装mysql,不知道初始密码,如何修改初始密码记录下. 解决方式: http://dev.mysql.com/doc/refman/5.7/en/resetting- ...
- 修改mysql默认字符集的方法
mysql默认字符集能否进行修改呢?答案是肯定的,下面就将教您两种修改mysql默认字符集的方法,希望对您学习mysql默认字符集方面能有所启迪. 1. 修改my.cnf vi /etc/my.cnf ...
- 查询和修改mysql最大连接数的方法
查询和修改mysql最大连接数的方法 切换到mysql库里查询 show variables like 'max_connections'; show global status like 'Max_ ...
- mysql导入access2016_php 导入mysql数据到access方法
我们来看看关于php 导入mysql数据到access方法 哦,下面是一个简单的实例哦,如果你正在把mysql的数据导入到access的话看到这肯定肯定可以实例了. mysql数据库表sqltable ...
- 将Excel表格导入mysql数据表_如何把Excel导入mysql数据表的方法详解
把Excel导入mysql数据表其实是一件非常的简单的事情了,我们可以通过多种方法来实现了,下面我们来看一些关于小编整理的把Excel导入mysql数据表的方法了. 方法一 把Excel导入mysql ...
最新文章
- FD.io/VPP — L3 vRouter
- c# GDI+简单绘图(二)
- [转]oracle设计数据库应选择正确的数据类型
- 【Paper】2020_多智能体系统的分布式故障估计方法研究
- 6D姿态估计从0单排——看论文的小鸡篇——Learning Analysis-by-Synthesis for 6D Pose Estimation in RGB-D Images...
- 数据结构---BF字符串模式匹配
- 微软ODBC服务器驱动,解决安装SQL Server时[Microsoft][ODBC 驱动程序管理器] 未发现数据源的问题...
- mysql安装包下载密码_MySQL解压包的安装与下载的图文教程
- Golang——死锁、互斥锁、读写锁的实现
- QQ超市模拟排配2D版1.14 (XNA4.0) (增加截图功能、新建地图功能)
- 你不得不知道的流程规范@多方配合的需求质量控制
- delphi商业源码
- Linksys e3200初试tomato系统
- python能干什么知乎-python能做什么知乎
- 如何实现阿里云短信接口使用短信业务
- 996工作制,还要抽时间提升自己吗?
- peoplesoft链接oracle,Oracle 调整对PeopleSoft HRMS8.8的支持延伸到2011年
- Java面试官最爱问的垃圾回收机制,mysql密码忘记
- java的jar文件
- 如何在您的香港主机帐户上注册多个域名
热门文章
- laravel mongodb如何声明数据类型_什么是MongoDB?简介,架构,功能和示例
- 查看此docker网络连接模式_Docker:网络模式详解
- 【ES11(2020)】Promise 扩展 allSettled()
- C语言工作笔记-对函数指针的进一步认识(与回调函数结合使用,并且对比C++的回调)
- C++|OpenCV-HSV图像
- Qt工作笔记-对QXmlStreamWriter进一步的认识(写复杂的XML文件)
- bash mysql 循环输出_Bash实用技巧:同时循环两个列表
- 禅道报表中关闭bug统计图_想要简单制作数据可视化分析报表?这个工具绝对好用...
- python二级最后一题_python二级考试操作题2.pdf
- 2-4:套接字(Socket)编程之TCP通信