MyISAM,Memory,InnoDB-程序员宅基地

技术标签: memory  myisam  mysql  innodb  

MyISAM:

表锁:表级锁。注意不要让它成为瓶颈

不支持自动数据恢复:服务器崩溃或停电后,就应该在使用之前检查和执行可能的修复。

不支持事务:实际上,MyISAM甚至不保证单个命令会完成。如果在多行UPDATE的中途有错误发生,一些行会被更新,而另外一些则不会。

只有索引被缓存在内存中:MyISAM中缓存了MYSQL进程内部的索引,并保存在键缓冲区。操作系统缓存了表的数据,因此在MYSQL5.0中须进行昂贵的系统调用来取得它。

紧密存储:行被紧紧地保存在一起,这样磁盘上的数据就能行到小的磁盘占用和快速的全表扫描。


Memory

表锁:和MyISAM一样,但Memory表上的查询都较快,所以通常不是问题。

不支持动态行:动态行即可变长度行,因此它们根本不支持BLOG和TEXT字段,即使varchar(5000)也会变成char(5000).这样如果大多数值较小,则是巨大的内存浪费。

哈希索引是默认索引类型

没有索引统计

重启后丢失数据:Memory表不会把任何数据持久到磁盘,因此当服务器重启后即使表的定义还在,数据也会丢失。


InnoDB:

事务性:InnoDB支持事务和四种事务隔离级别

外键:在Mysql5.0中,InnoDB是唯一支持外键的存储引擎。另外的存储引擎在CREATE TABLE命令中可以接受外键,但却不会强制执行。一些第三方引擎,比哪SolidDB,也在存储引擎层次支持它。

行级锁:锁设定于行一级,不会向上传递并且也不会阻塞选择----标准选择根本不会设定任何锁,它有很好的并发特性

多版本:InnoDB使用多版本并发控制,这样在默认情况下可能选择读取陈旧的数据。事实上,它的MVCC架构增添了很多复杂的和意料之外的行为。如果使用InnoDB,就应该仔细阅读InnoDB手册。

按主键聚集:所有的InnoDB表都是按主键聚集的。可以在架构设计中运用这一点

所有索引包含主键列:索引按照主键引用行,因此如果不把主键维持得很短,索引就增长得很大。

优化的缓存:InnoDB把数据和内存缓存在缓冲区池里。它也会自动构建哈希索引以加快行读取。

未压缩的索引:索引没有使用前缀压缩,因此可能会比MyISAM表的索引大很多。

数据装载缓慢:在MyISAM5.0中,InnoDB不会特别优化数据加载。它一次构建一行的索引,而不是按照排序进行构建。这会导致数据加载缓慢。

阻塞AUTO_INCREMENT:在Mysql5.1之前的版本中,InnoDB使用了表级锁来产生每个新的AUTO_INCREMENT值。

没有缓存的COUNT(*)值:和MyISAM表或Memory表不同,InnoDB表不会把表的行数保存在表中,这意味着没有WHERE子句的COUNT(*)查询不会被优化掉,并且需要全表或索引扫描。


 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/home198979/article/details/84285544

智能推荐

JavaScript语法高亮库highlight.js使用_语法高亮js css文件-程序员宅基地

文章浏览阅读9.9k次。highlight.js是一款基于JavaScript的语法高亮库,目前支持125种编程语言,有63种可供选择的样式,而且能够做到语言自动识别,和目前主流的JS框架都能兼容,可以混合使用。这款高亮库可以用在博客系统中,其使用方法及其简单,几乎不需要任何学习成本,下面介绍highlight.js的使用。1.获取highlight.js库,用户可以从官网获取:地址:https://highlightjs_语法高亮js css文件

【笔记】strftime的使用方法-程序员宅基地

文章浏览阅读5.1k次。strftimestrftime是C语言标准库中用来格式化输出时间的的函数。下面是strftime的用法各参数意义代码使用示例#include<stdio.h>#include<time.h>#define print(s1, s2,s3) \ printf("%-20s%-30s%s\n",s1, s2,s3);int main(){ time_t rawtime; struct tm* timeinfo; char timE[80]; /

2018.09.12 poj3621Sightseeing Cows(01分数规划+spfa判环)-程序员宅基地

文章浏览阅读147次。传送门 01分数规划板题啊。 发现就是一个最优比率环。 这个直接二分+spfa判负环就行了。 代码:#include&lt;iostream&gt;#include&lt;cstdio&gt;#include&lt;cstring&gt;#include&lt;algorithm&gt;#include&lt;cmath&gt;#define N 1005#define...

hive sql的常用日期处理函数总结_hive sql 日期函数-程序员宅基地

文章浏览阅读3.1k次,点赞2次,收藏14次。1)date_format函数(根据格式整理日期)  作用:把一个字符串日期格式化为指定的格式。select date_format('2017-01-01','yyyy-MM-dd HH:mm:ss'); --日期字符串必须满足yyyy-MM-dd格式   结果:2017-01-01 00:00:002)date_add、date_sub函数(加减日期)  作用:把一个字符串日期格式加一天、减一天。select date_add('2019-01-01',1); ..._hive sql 日期函数

Android Studio使用百度语音合成是TTS时报错: ****.so文件找不到的有关问题_旧版的百度语言合成报错-程序员宅基地

文章浏览阅读2.1k次。使用百度语音合成过程时,一直error : notfint libgnustl_shared.so在项目工程gradle文件中添加如下代码段:sourceSets { main { jniLibs.srcDirs = ['libs'] } }..._旧版的百度语言合成报错

BZOJ1202: [HNOI2005]狡猾的商人_狡猾的商人[hnoi2005]-程序员宅基地

文章浏览阅读425次。Description 刁姹接到一个任务,为税务部门调查一位商人的账本,看看账本是不是伪造的。账本上记录了n个月以来的收入情况,其中第i个月的收入额为Ai(i=1,2,3…n-1,n), 。当 Ai大于0时表示这个月盈利Ai 元,当 Ai小于0时表示这个月亏损Ai元。所谓一段时间内的总收入,就是这段时间内每个月的收入额的总和。 刁姹的任务是秘密进行的,为了调查商人的账本,她只好跑到商人那_狡猾的商人[hnoi2005]

随便推点

kali 安装取证工具volatility_kali安装volatility-程序员宅基地

文章浏览阅读3.1k次,点赞2次,收藏12次。计算机取证 volatility_kali安装volatility

html禁止图片缓存(刷新网站)_html禁止浏览器缓存图片-程序员宅基地

文章浏览阅读2.1k次。地址:https://blog.csdn.net/fareast_mzh/article/details/81464031_html禁止浏览器缓存图片

如何设置一个计算机用户访问磁盘,登录后限制用户访问硬盘分区-程序员宅基地

文章浏览阅读1.3k次。限制用户登录后访问硬盘分区。我们的部门有一台公用计算机,该计算机由我维护。其他同事也可以偶尔使用它。我在操作系统中为自己创建了一个超级管理员用户,还创建了一个受限用户。登录到计算机后,如何允许受限用户查看但不能访问用于存储重要文件的D分区?您可以通过以下操作实现该目标:在系统桌面上使用鼠标依次选择“开始”。在弹出窗口的“打开”(Open)字段中键入gpedit.msc,然后单击“确定”(OK)按钮..._win7 分区只能某个用户打开

更改vscode Java项目的.class文件输出路径_vscode怎么class文件-程序员宅基地

文章浏览阅读6.7k次,点赞17次,收藏21次。1.在vscode里面按下快捷键ctrl+shift+p2.输入Classpath3.点击Output下的Browse选择.class文件的输出路径4.如图,选择完以后,.class文件的输出层级目录会自动建立_vscode怎么class文件

Python缩进规则-程序员宅基地

文章浏览阅读1.2w次,点赞4次,收藏24次。python的缩进规则:对于类定义、函数定义、流程控制语句、异常处理语句等,行尾的冒号和下一行的缩进,表示下一个代码块的开始,而缩进的结束则表示此代码块的结束。通常情况下都是采用4个空格长度作为一个缩进量(一个Tab键就表示4个空格)。一,Python缩进长度及缩进字符。 看到网上一些Python缩进的错误示范,“tab符和空格不能混用”,“缩进一定是4个空格”下列演示。​def change(a): print(id(a)) # 指向的是同一个对象(tab缩进) a=10_python缩进规则

微信小程序api视频课程-定时器-setTimeout的使用_微信小程序 settimeout 向上层传值-程序员宅基地

文章浏览阅读1.1k次。JS代码 /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { setTimeout( function(){ wx.showToast({ title: '黄菊华老师', }) },2000 ) },说明该代码只执行一次..._微信小程序 settimeout 向上层传值

推荐文章

热门文章

相关标签