深入解析:MySQL MyISAM与InnoDB引擎的优劣势对比

创始人
2024-12-15 18:43:50
0 次浏览
0 评论

mysql的静态表和动态表的区别,MyISAM和InnoDB的区别

MyISAM是一个MySQL数据库引擎(5.5版本之前),它是从第一个ISAM(IndexedSequentialAccessMethod:索引顺序访问方法)改进而来的。
虽然这项工作很出色,但它有一个缺点:它不支持业务流程。
不过,随着这几年的发展,MySQL也加强了InnoDB(另一个数据库引擎)确认关系完整性和并发违规处理机制,然后逐渐取代了MyISAM。
InnoDB是MySQL数据库引擎之一,也是MySQLAB发布的二进制标准之一。
InnoDB由InnobaseOy和Oracle于2006年5月开发。
与传统的ISAM和MyISAM相比,InnoDB最大的特点是支持ACID兼容的(Transaction)功能,类似于PostgreSQL。
这样,InnoDB采用双轨许可制度,一个是GPL许可,另一个是专有许可。
MyISAM和InnoDB有什么区别?1、MyISAM的存储结构:每个MyISAM存储为三个文件围成一个圈。
第一个文件的名称以文件名开头,扩展名表示文件的类型。
.frm文件存储表定义。
文件扩展名为.MYD(MYData)。
索引文件扩展名为.MYI(MYindex)。
InnoDB:同一个数据文件(或多个文件存储,或独立表空间表)中的所有表。
InnoDB表的大小仅受操作系统文件大小的限制,一般为2GB。
2、MyISAM存储空间:可以压缩,存储空间小。
支持三种不同的存储格式:静态表(默认,但注意数据末尾不能有空格,否则会被移动)、动态表、压缩表。
InnoDB:需要更多的内存和存储,它会在主内存中建立一个专用池来收集数据和索引。
3、可移植性、备份和恢复MyISAM:数据以文件的形式存储,因此跨文件传输数据非常方便。
备份和恢复时可以单独对表进行操作。
InnoDB:免费的解决方案包括复制数据文件,备份binlog,或者使用mysqldump,当数据量达到几十G时相对麻烦。
4.MyISAM事务支持:重点是性能。
每个查询都是原子的,其时间比InnoDB类更快,但不提供事务支持。
InnoDB:提供事务支持、外键等高级数据库功能。
具有事务(提交)、回滚和崩溃恢复功能的事务感知(符合ACID)表。
5.AUTO_INCRMENTMyISAM:可以与其他字段创建共同索引。
应该有一个客户增长引擎栏目索引。
如果索引是链接的,则增量列不必是第一列。
InnoDB:InnoDB必须包含仅包含此字段的索引。
必须是自增列索引,如果是复合索引,则第一列也必须是复合索引。
6.MyISAM表锁差异:表级只支持毛。
当用户激活我的表时,选择、更新、删除和插入语句会自动关闭表,并在表末尾添加新数据。
InnoDB:支持事务和队列管理,这是innodb的主要特点。
行发对于并发多用户操作有了很大的改进。
但是InnoDB的Sera顺序只在UBI的主键上有效。
7、MyISAM全文索引:基于InnoDB支持的全文索引。
InnoDB不支持FULLTEXT类型的全文索引,但是innodb可以使用sphinx插件来实现全文索引并获得更好的性能。

8.MyISAM主键表:允许没有任何现有主键和索引的表。
地址列表是保存订单的地方。
InnoDB:如果键未设置主索引或非空唯一索引时,将自动生成一个6字节主键(用户不可见)。
9.表中一定数量的行。
InnoDB:不存储表中的行数。
如果使用select(')detable;以同样的方式。
MyISAMCURD的操作10.如果你这样做最好选择MyISAM的数量。
InnoDB:如果您的数据库执行大量INSERT或UPDATE操作,您应该使用InnoDB表来执行计算。
DELETE在性能上比InnoDB要好,但是当使用DELETEFROMTABLE时,它不会重新创建InnoDB表,而是逐行删除最好用truncatetable命令。
11、MyISAM外键:不支持InnoDB:根据分析,基本上可以考虑使用InnoDB来替代MyISAM引擎。
行级密度等等等,在并发量很大的情况下,我相信InnoDB肯定会比MyISAM表现好很多。
此外,没有一张桌子是万能的。
只有针对事务类型选择合适的表类型,才能增加MySQL的性能优势。
如果不是非常复杂的Web应用或者应用不关键的话,还是可以考虑MyISAM。

mysql中的默认的一张user表如何查看?

我记得有一个垂直输出,后面加“\G”,即:select*fromuser\G当然你也可以使用tee重定向到文件;最好的方法是安装像NavicatforMySQL这样的连接工具

mysql建表时设置默认当前时间

在MySQL中,默认值是不允许使用函数的,这里是一个例子mysql>CREATETABLEtest_wang(->IDINT,->date1VARCHAR(20),->date2VARCHAR(20)->);QueryOK,0rowsaffected(0.01sec)-Enter一个数字随机化列并确保可以存储数据。
wangvalues(1,rand(),rand());QueryOK,1rowaffected(0.00sec)mysql>select*fromtest_wang;+-------+------------------------------+--------------------+|ID|日期1|日期2|+--------+-------------------+----------------|1|0.770875269333716|0.351427750989262|+------+------------------+--------------------+1rowinset(0.00sec)--这里我们尝试将列的默认值设置为随机数,但它失败了。
mysql>ALTERTABLEtest_wang->MODIFYCOLUMNdate1->VARCHAR(20)->DEFAULTRAND();ERROR1064(42000):您的SQL语法有错误;在'RAND()'atline4附近的权限语法中检查与您的MySQL服务器版本相对应的目录-将默认值设置为常量值,并且有效。
mysql>ALTERTABLEtest_wang->MODIFYCOLUMNdate1->VARCHAR(20)->DEFAULT'123';QueryOK,0rowsaffected(0.02sec)记录:0重复:0WARNINGS:0DROPTABLEtest_wang;--如果是日期,尝试使用TIMESTAMP数据类型--实现此功能。
mysql>CREATETABLEtest_wang(->idINTUNSIGNEDAUTO_INCRMENT,->date1TIMESTAMP,->date2TIMESTAMP,->PRIMARYKEY(id)->);查询OK,0rowsaffected(0.02sec)mysql>insertintotest_wang(date1)VALUES(null);查询OK,1rowaffected(0.00sec)mysql>select*fromtest_wang;+----+-------------------+--------------------+|iD|日期1|日期2|+----------------+------------------------------------+-----+|1|2011-10-1211:30:26|0000-00-0000:00:00|+----+-------------------+---------------------+1行(0.00秒)
文章标签:
MyISAM InnoDB
热门文章
1
SQL2000数据库备份压缩技巧:优化空... 怎么将SQL2000中的较大的备份数据库压缩变小更改数据库属性-选项-恢复模型很...

2
高效掌握:CMD命令轻松启动、关闭及登录... 如何用cmd命令快速启动和关闭mysql数据库服务开发中经常使用MySQL数据库...

3
SQL字符串处理技巧:单引号使用与转义标... SQL语句中,字符串类型的值均使用什么符号标明?单引号如果字符串内有单引号,请小...

4
Windows环境下Redis安装指南与... redis安装windowsredis基本简介与安装安装Redis首先需要获取安...

5
深度解析:Redis性能优势与局限性,助... redis有哪些优缺点?Redis的全称是RemoteDictionary.Se...

6
深入解析:MySQL数据库的特性与应用 mysql是什么MySQL是一个关系数据库管理系统。MySQL是一个开源关系数据...

7
MySQL命令行操作指南:轻松启动和登录... 用命令行方式启动和登录mysql服务的方法1.启动MySQL服务1打开命令行窗口...

8
Linux Redis后台启动教程:配置... linux怎么启动redis1、首先,为了管理方便,将Redis文件中的conf...

9
MySQL浮点数与Decimal类型详解... MySQL中的float和decimal类型有什么区别小数类型可以准确地表示非常...

10
C语言实现输入10个整数并找出最大最小值... C语言从键盘输入任意的10个整数,从中找出最大值和最小值并输出代码:#inclu...