innodb和myisam(Mysql InnoDB和MyISAM区别原理解析)
innodb和myisam
Mysql InnoDB和MyISAM区别原理解析mysql支持很多表类型的表(即存储引擎),如myisam、innodb、memory、archive、example等。每种存储引擎都有自己的优点和缺点,充分的理解每种存储引擎,有助于合理的使用它们。有人认为在同一个数据库中使用多种存储引擎很影响性能,其实这是一种十分错误的想法。实际上,除非是非常简单的数据库,否则的话,只使用一种存储引擎,对应用程序的性能来说是一个十分糟糕的行为。对数据库了解的人会根据每张表的作用不同来选择适当的存储引擎,这才是正确的做法。
前面说过mysql的存储引擎很多,但是我个人在工作中运用最多的存储引擎有两个,一个是InnoDB,一个是MyISAM。我这里就聊聊这两个存储引擎,并比较下两者之间的区别。
一、MyISAM
MyISAM现在为mysql的默认存储引擎,如果在建表的时候,没有指定表类型,mysql就会默认使用MyISAM。MyISAM有一个很多人认为很重要,然而我却觉得没什么卵用的特性,那就是MyISAM表示独立于操作系统之外的。通俗点说就是你可以很轻松的将MyISAM表从windows移植到linux或者从linux移植到windows。这确实是个优点,可是哪个技术主管会有在决定用了一种操作系统一段时间后又要换服务器的操作系统的脑残行为,所有我认为这个优点没有什么实际的意义。
MyISAM存储引擎是mysql组件中非常重要的一部分,在mysql中可以创建3种MyISAM格式的表——静态、动态和压缩。格式不需要单独指定,mysql会根据表结构自动选择最合适的格式。
1、MyISAM静态
如果表的每个字段的数据类型的定义都是使用静态的(如char),mysql就会自动使用静态MyISAM格式,这种类型格式的表的性能是很高的,也就是查询更新用的时间很少,但要知道这是在牺牲空间为代价。因为每一列都要分配最大的空间,即使有部分空间没有用到,这就使得静态的表所占的空间会比较大。
2、MyISAM动态
如果表的每个字段的数据类型的定义都是使用动态的(如varchar),mysql就会自动使用动态MyISAM格式,这种类型格式的表的性能会有所下降,但是它的空间占有要比静态的少很多。
3、MyISAM压缩
如果有一张表在设计之初只赋予了它读的使命,就可以用MyISAM压缩表,在相同的配置下,它的性能是最快的。
二、InnoDB
InnoDB是一个事务型存储引擎,它默认支持事务。因此,在对数据完整度有较高要求的项目中,都是采用InnoDB作为存储引擎,比如跟银行相关的项目。InnoDB还引入行级锁定。其他表类型都是全表锁定,意思就是说,在一个用户要修改一张表中,自己那一行的某个信息的时候,数据库会先锁定整张表,其他用户对这张表无法进行操作,这就是全表锁定。行级锁定就不一样了,只锁定自己要修改的那一行的,也就是说其他人对表还可以进行操作,只是不能操作被锁定的那一行的数据了。好处显而易见,在速度上更快了,特别适合处理多重并发的更新请求。
InnoDB还引入了外键约束。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。
原文链接:https://www.cnblogs.com/yangwenxin/p/7028643.html
- mysql对大表千万级如何优化(MySQL 大表的count优化实现)
- 利用xampp搭建服务器(xampp集成环境怎样使用MySQL数据库)
- mysql不兼容问题(解决mysql 组合AND和OR带来的问题)
- oracle如何用脚本文件创建表空间(MySQL版oracle下scott用户建表语句实例)
- MySQL中ROUND四舍五入函数需要注意的地方
- mysql怎样建立索引(MySQL创建索引需要了解的)
- python对mysql数据分析(python使用adbapi实现MySQL数据库的异步存储)
- mysql函数编写(MySQL中sum函数使用的实例教程)
- mysql update 多个字段(mysql update case 更新字段值不固定的操作)
- python mysql配置(详解python校验SQL脚本命名规则)
- mysql的三种模式(详解 MySQL的FreeList机制)
- 常见的mysql优化策略(MySQL pt-slave-restart工具的使用简介)
- php7用什么替代mysql(mysqli扩展无法在PHP7下升级问题的解决)
- windows mysql 忘记密码(解决MySQL忘记密码问题的方法)
- mysql类型转换函数推荐(mysql 数据类型转换的实现)
- MYSQL中常用的强制性操作
- 今日菜价 芥兰涨幅最高 1.33 ,花菜降幅最高 3.10(今日菜价芥兰涨幅最高)
- 今日菜价 椰菜涨幅最高 3.25 ,水空心菜降幅最高 2.58(今日菜价椰菜涨幅最高)
- 今日菜价 红三鱼涨幅最高 4.41 ,黄鳝降幅最高 5.06(红三鱼涨幅最高)
- 今日菜价 西生菜涨幅最高 6.19 ,生菜降幅最高 5.38(西生菜涨幅最高)
- 今日菜价 青豆角涨幅最高 0.70 ,菜心降幅最高 5.55(青豆角涨幅最高)
- 农村植物,龙芽草若长在您家路旁,请珍惜,它对抗癌有特效(龙芽草若长在您家路旁)
热门推荐
- html怎么引入sass(利用CSS的Sass预处理器框架来制作居中效果)
- vs中找不到bin文件夹
- dedecms不生成文档(dedecms批量替换文章中超链接的方法)
- mysql获取当前日期时间(MySQL DATEDIFF函数获取两个日期的时间间隔的方法)
- sql server设置标识列(Sql Server 如何去掉内容里面的Html标签)
- 进程和线程的区别有哪些
- php 结果集转json(PHP的JSON封装、转变及输出操作示例)
- Js如何判断浏览器类型和版本
- python删除列表中的重复元素(Python实现去除列表中重复元素的方法总结7种方法)
- laravelqq邮箱发送失败(解决laravel 表单提交-POST 异常的问题)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9