阿里P8架构师谈:MySQL有哪些存储引擎,各自的优缺点,应用场景

经常面试都会问到MYSQL有哪些存储引擎,以及各自的优缺点。今天主要分享常见的存储引擎:MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)等,以及最常用的MyISAM与InnoDB两个引擎 ,文章尾部有两者的详细比较。

MySQL常用存储引擎介绍

1.InnoDB 引擎(MySQL5.5以后默认使用)

MySQL 5.5 及以后版本中的默认存储引擎,他的优点如下:

  • 灾难恢复性好
  • 支持事务
  • 使用行级锁
  • 支持外键关联
  • 支持热备份
  • 对于InnoDB引擎中的表,其数据的物理组织形式是簇表(Cluster Table),主键索引和数据是在一起的,数据按主键的顺序物理分布
  • 实现了缓冲管理,不仅能缓冲索引也能缓冲数据,并且会自动创建散列索引以加快数据的获取
  • 支持热备份

2.MyISAM引擎

特性如下:

  • 不支持事务
  • 使用表级锁,并发性差
  • 主机宕机后,MyISAM表易损坏,灾难恢复性不佳
  • 可以配合锁,实现操作系统下的复制备份、迁移
  • 只缓存索引,数据的缓存是利用操作系统缓冲区来实现的。可能引发过多的系统调用且效率不佳
  • 数据紧凑存储,因此可获得更小的索引和更快的全表扫描性能

3.MEMORY 存储引擎

提供内存表,也不支持事务和外键。显著提高访问数据的速度,可用于缓存会频繁访问的、可以重构的数据、计算结果、统计值、中间结果。

缺点如下:

  • 使用表级锁,虽然内存访问快,但如果频繁的读写,表级锁会成为瓶颈
  • 只支持固定大小的行。Varchar类型的字段会存储为固定长度的Char类型,浪费空间
  • 不支持TEXT、BLOB字段。当有些查询需要使用到临时表(使用的也是MEMORY存储引擎)时,如果表中有TEXT、BLOB字段,那么会转换为基于磁盘的MyISAM表,严重降低性能
  • 由于内存资源成本昂贵,一般不建议设置过大的内存表,如果内存表满了,可通过清除数据或调整内存表参数来避免报错
  • 服务器重启后数据会丢失,复制维护时需要小心

MySQL存储引擎MyISAM与InnoDB如何选择

1.两种存储引擎的大致区别表现在:

1)InnoDB支持事务,MyISAM不支持,这一点是非常之重要。事务是一种高级的处理方式,如在一些列增删改中只要哪个出错还可以回滚还原,而MyISAM就不可以了。

2)MyISAM适合查询以及插入为主的应用,InnoDB适合频繁修改以及涉及到安全性较高的应用

3)InnoDB支持外键,MyISAM不支持

4)从MySQL5.5.5以后,InnoDB是默认引擎

5)InnoDB不支持FULLTEXT类型的索引

6)InnoDB中不保存表的行数,如select count(*) from table时,InnoDB需要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含where条件时MyISAM也需要扫描整个表。

7)对于自增长的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中可以和其他字段一起建立联合索引。

8)清空整个表时,InnoDB是一行一行的删除,效率非常慢。MyISAM则会重建表。

9)InnoDB支持行锁(某些情况下还是锁整表,如 update table set a=1 where user like ‘%lee%’

有人说MYISAM只能用于小型应用,其实这只是一种偏见。

如果数据量比较大,这是需要通过升级架构来解决,比如分表分库,读写分离,而不是单纯地依赖存储引擎。

现在一般都是选用InnoDB了,主要是MyISAM的全表锁,读写串行问题,并发效率锁表,效率低,MyISAM对于读写密集型应用一般是不会去选用的。

总之:

1.MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。

2.MyISAM类型的表强调的是性能,其执行速度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。

如果你还想了解mysql的各种锁:表锁、行锁、乐观锁等,可以点击查看:

阿里P8架构师谈:MySQL行锁、表锁、悲观锁、乐观锁的特点与应用


money.jpg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/480639.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TensorFlow 全网最全学习资料汇总之TensorFlow的技术应用

谷歌于2015年11月发布了全新人工智能系统TensorFlow。该系统可被用于语音识别或照片识别等多项机器深度学习领域,主要针对2011年开发的深度学习基础架构DistBelief进行了各方面的改进,它可在小到一部智能手机、大到数千台数据中心服务器的各种设备上运行…

13个offer,8家SSP,谈谈我的秋招经验

本文转载自公众号“夕小瑶的卖萌屋”,专业带逛互联网算法圈的神操作 -----》我是传送门 关注后,回复以下口令: 回复【789】 :领取深度学习全栈手册(含NLP、CV海量综述、必刷论文解读) 回复【入群】&#xf…

领域应用 | 知识图谱的技术与应用

本文转载自公众号:贪心科技。作者 | 李文哲,人工智能、知识图谱领域专家导读:从一开始的Google搜索,到现在的聊天机器人、大数据风控、证券投资、智能医疗、自适应教育、推荐系统,无一不跟知识图谱相关。它在技术领域的…

阿里P8架构师谈:MySQL慢查询优化、索引优化、以及表等优化总结

MySQL优化概述 MySQL数据库常见的两个瓶颈是:CPU和I/O的瓶颈。 CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候。 磁盘I/O瓶颈发生在装入数据远大于内存容量的时候,如果应用分布在网络上,那么查询量相当大的时候那么平瓶颈就…

医药领域知识图谱快速及医药问答项目

QABasedOnMedicaKnowledgeGraph self-implement of disease centered Medical graph from zero to full and sever as question answering base. 从无到有搭建一个以疾病为中心的一定规模医药领域知识图谱,并以该知识图谱完成自动问答与分析服务。 项目介绍 本项…

一文详解深度学习在命名实体识别(NER)中的应用

近几年来,基于神经网络的深度学习方法在计算机视觉、语音识别等领域取得了巨大成功,另外在自然语言处理领域也取得了不少进展。在NLP的关键性基础任务—命名实体识别(Named Entity Recognition,NER)的研究中&#xff0…

如何做机器学习项目规划?一个事半功倍的checklist

一只小狐狸带你解锁 炼丹术&NLP 秘籍前言在接到一个新项目的时候,对其进行合理的安排和规划往往会有事半功倍的效果。下面是从规划30 多个机器学习项目的经验中,提炼出的一个简单有效的checklist。一起来看看叭~项目动机明确你的项目的更广泛的意义。…

论文浅尝 | 一种用于新闻推荐的深度知识感知网络

Citation: Wang H, Zhang F, Xie X, et al. DKN: Deep Knowledge-Aware Networkfor News Recommendation[J]. 2018.Published at: The 27th International Conference on World Wide Web (WWW18)URL:https://arxiv.org/pdf/1801.08284.pdfMotivation推荐系统最初是为…

MySQL数据库主从同步的3种一致性方案实现,及优劣比较

数据主从同步的由来 互联网的很多业务,特别是在高并发的场景下,基本都是读远远大于写,如果数据库读和写的压力都同在一台主机上,这显然不太合理。 于是,把一台数据库主机分为单独的一台写主库(主要负责写操…

中文复合(条件事件、因果事件、顺承事件、反转事件)事理图谱构建项目

ComplexEventExtraction chinese compound event extraction,中文复合事件抽取,包括条件事件、因果事件、顺承事件、反转事件等事件抽取,并形成事理图谱。 项目地址:https://github.com/liuhuanyong/ComplexEventExtraction 关于…

对话系统的简单综述及应用智能客服

https://zhuanlan.zhihu.com/p/52899436 对话系统的简单综述及应用智能客服“天猫精灵,放歌”,”送你一首好听的歌《XXX》“,《XXX》音乐响起...相信有天猫精灵的用户对此场景都不陌生,或者语音操作其他智能音箱设备,比…

硬核推导Google AdaFactor:一个省显存的宝藏优化器

一只小狐狸带你解锁炼丹术&NLP秘籍作者:苏剑林(来自追一科技,人称“苏神”)前言自从GPT、BERT等预训练模型流行起来后,其中一个明显的趋势是模型越做越大,因为更大的模型配合更充分的预训练通常能更有效…

领域应用 | 用知识图谱玩唐诗,“唐诗别苑”附庸端午节的别样风雅!

本文转载自公众号:互联网教育国家工程实验室 。 端午节在每年的农历五月初五,又称端阳节、午日节、五月节等。端午节起源于中国,是古代百越一带崇拜龙图腾的部族举行图腾祭祀的节日。五月初五也是缅…

参加完阿里蚂蚁金服Java中间件6轮面试题!6点血泪总结~

蚂蚁金服一面:分布式架构 50分钟 1、个人介绍加项目介绍20分钟 2、微服务架构是什么,它的优缺点? 3、ACID CAP BASE理论 4、分布式一致性协议,二段、三段、TCC,优缺点 5、RPC过程 6、服务注册中心宕机了怎么办&am…

特定热点事件监控与分析项目

EventMonitor Event monitor based on online news corpus built by Baidu search enginee using event keyword for event storyline and analysis,基于给定事件关键词,采集事件资讯,对事件进行挖掘和分析。 项目地址:https://g…

深度好文:2018 年 NLP 应用和商业化调查报告

、 深度好文:2018 年 NLP 应用和商业化调查报告 Debra 阅读数:7650 2019 年 1 月 11 日近年来,自然语言处理技术已经取得了长足进步,成为应用范围最广泛,也是最为成熟的 AI 技术之一。但实际上,自然语言处理…

论文浅尝 | 通过多原型实体指称向量关联文本和实体

Cao Y,Huang L, Ji H, et al. Bridge Text and Knowledge by Learning Multi-Prototype Entity Mention Embedding[C]// Meeting of the Association for Computational Linguistics. 2017:1623-1633.导读:学术界近两年来十分关注如何将文本等非结构化数据和知识库等…

【面试必备】奉上最通俗易懂的XGBoost、LightGBM、BERT、XLNet原理解析

一只小狐狸带你解锁 炼丹术&NLP 秘籍在非深度学习的机器学习模型中,基于GBDT算法的XGBoost、LightGBM等有着非常优秀的性能,校招算法岗面试中“出镜率”非常高。这些经典的机器学习算法不仅是数据科学竞赛神器,在工业界中也被广泛地使用。…

2019手把手教你Java面试通关BAT

金三银四俗称跳槽黄金季,很多同学都想趁着这段时间拿高薪,去更牛逼的公司工作,认识更多大牛,提升自己的职场竞争力。 那怎样才能通过BAT面试官的考核?怎样成为一名Offer收割机? 之前讲过收割Offer有一个最…

特定领域因果事件图谱构建项目

CausalityEventExtraction self complement of templated based causality event extraction 基于因果关系知识库的因果事件图谱构建demo 项目地址:https://github.com/liuhuanyong/CausalityEventGraph 项目介绍 现实社会是个逻辑社会,大量的逻辑即逻…