热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQL性能优化:深入解析存储引擎特性与选择策略

本文将深入探讨MySQL存储引擎的特性及其选择策略。在MySQL5.1之前的版本中,存储引擎必须与MySQL一同编译和安装。自5.1版本起,存储引擎通过插件化接口实现,显著提升了灵活性和扩展性。文中详细分析了不同存储引擎的特点,如InnoDB、MyISAM等,并提供了针对具体应用场景的优化建议,帮助读者更好地理解和选择适合的存储引擎,以提升数据库的整体性能。

今天咱们简单了解下mysql的存储引擎

 概述

   Mysql5.1之前版本中,存储引擎是需要在msyql安装中必须和mysql一起被编译同时安装的。之后的版本中,基本上完全是通过接口实现。从5.1开始,mysql对结构体系做了较大改造,引入了新的概念:插件式引擎结构,让存储引擎和sql层各自更为独立,耦合更小。让加载和一出更为灵活。

    插件式存储引擎主要包括MyiScminnodbNOBClustermatria MemoryMerge等,较为广泛的是 MyIsamInodb两种。Myisammysql最早的。Innodb是第三方公司研发的,特点是支持事务控制。其他的如NDB cluster也有事务,但是主要是用于分布式环境,术语share nothing的分布式数据库存储引擎。

存储引擎


MyIsam 

myISAM存储引擎的表在数据库中有三部分构成

分别是:

如:tb_demo

  • tb_demo.frm 存储表定义
  • tb_demo.myd 存储表数据
  • tb_demo.myi 存储索引

 

MyISAM支持的索引有三种类型

  • B-Tree索引所有索引节点按照平衡树的数据结构存储
  • R-Tree 主要用于存储空间和多维数据的字段索引
  • Full-test 全文索引存储结构是b-tree,解决linke查询效率底问题

MyISAM无法处理事务,所以对事务请的表,不能使用myisam存储引擎,但是一些情况还是很MYISAM

MyISAM存储引擎在筛选大量数据时非常迅速,这是它最突出的优点。

 

InnoDB

Innodb之所以这么受欢迎,主要是有以下特点:

1支持事务

2数据库多版本读取

3锁定机制的改进,实现了行锁

4实现外键

5物理存储方面

              物理结构分为两大部分,数据文件和日志文件

一般来说,如果需要事务支持,并且有较高的并发读取频率,InnoDB是不错的选择。

 

NDB  

NDB存储引擎也叫NDB Cluster存储引擎,主要用于Mysql Cluster分布式集群环境, Cluster是从5.0版本开始的。

主要构成有三部分


1负责管理各个节点的Mange节点主机

包括集群配置,启动关闭各个节点,以及实施数据库备份恢复等。manage节点是必须最先配启动的节点

2Sql等的sql服务节点

是我们常说的Mysql server,主要负责实现一个i额和数据库在存储层之上的事情,不如连接管理,queyr优化和响应,cache管理,之后的工作就给了NDB节点处理。

3Stirage层的NDB数据节点

NDB是内存式存储一你去那个,所有数据二话索引数据都load到内存中,但也会将数据持久化到存储设备上。主要是实现底层数据存储功能,保存Cluster的数据


Memory

          使用MySQL Memory存储引擎的出发点是速度。为得到最快的响应时间,采用的逻辑存储介质是系统内存。虽然在内存中存储表数据确实会提供很高的性能,但当mysqld守护进程崩溃时,所有的Memory数据都会丢失。获得速度的同时也带来了一些缺陷。它要求存储在Memory数据表里的数据使用的是长度不变的格式,这意味着不能使用BLOBTEXT这样的长度可变的数据类型,VARCHAR是一种长度可变的类型,但因为它在MySQL内部当做长度固定不变的CHAR类型,所以可以使用。

 

若要查看咱们数据库的版本以及使用的默认存储引擎基本命令如下:

当前版本

show variables like 'version';

查看默认存储引擎

  show engines ,带有default是默认


 

小结:


Mysql存储引擎有多种,这里只是简单的介绍了常用的两种情况,其他版本的还的大家多多去了解



推荐阅读
  • 申请地址:https://developer.apple.com/appstore/contact/?topic=expedite 常见申请理由:1. 我们即将发布新产品,这是一个媒体活动,我们无法承担任何风险,因此在多个方面努力提升应用质量。 ... [详细]
  • 数据类型--char一、char1.1char占用2个字节char取值范围:【0~65535】char采用unicode编码方式char类型的字面量用单引号括起来char可以存储一 ... [详细]
  • 本文探讨了如何通过Service Locator模式来简化和优化在B/S架构中的服务命名访问,特别是对于需要频繁访问的服务,如JNDI和XMLNS。该模式通过缓存机制减少了重复查找的成本,并提供了对多种服务的统一访问接口。 ... [详细]
  • 本文将从基础概念入手,详细探讨SpringMVC框架中DispatcherServlet如何通过HandlerMapping进行请求分发,以及其背后的源码实现细节。 ... [详细]
  • 本文通过分析一个具体的案例,探讨了64位Linux系统对32位应用程序的兼容性问题。案例涉及OpenVPN客户端在64位系统上的异常行为,通过逐步排查和代码测试,最终定位到了与TUN/TAP设备相关的系统调用兼容性问题。 ... [详细]
  • 深入理解Java SE 8新特性:Lambda表达式与函数式编程
    本文作为‘Java SE 8新特性概览’系列的一部分,将详细探讨Lambda表达式。通过多种示例,我们将展示Lambda表达式的不同应用场景,并解释编译器如何处理这些表达式。 ... [详细]
  • 本文详细介绍了如何在Windows操作系统中配置和使用Lex(Flex)与Yacc(Bison),包括软件的下载、安装以及通过示例验证其正确性的步骤。 ... [详细]
  • 本文介绍了如何利用X_CORBA实现远程对象调用,并通过多个示例程序展示了其功能与应用,包括基础的Hello World示例、文件传输工具以及一个完整的聊天系统。 ... [详细]
  • 编译原理中的语法分析方法探讨
    本文探讨了在编译原理课程中遇到的复杂文法问题,特别是当使用SLR(1)文法时遇到的多重规约与移进冲突。文章讨论了可能的解决策略,包括递归下降解析、运算符优先级解析等,并提供了相关示例。 ... [详细]
  • PGXC中的两阶段提交机制及其对事务一致性的保障
    PGXC作为一款基于PostgreSQL的分布式数据库系统,利用Sharding技术将数据分散存储于多个数据库实例中。本文探讨了PGXC的两阶段提交过程及其实现事务强一致性的方法。 ... [详细]
  • 对象存储与块存储、文件存储等对比
    看到一篇文档,讲对象存储,好奇,搜索文章,摘抄,学习记录!背景:传统存储在面对海量非结构化数据时,在存储、分享与容灾上面临很大的挑战,主要表现在以下几个方面:传统存储并非为非结 ... [详细]
  • 本文详细介绍了 Spark 中的弹性分布式数据集(RDD)及其常见的操作方法,包括 union、intersection、cartesian、subtract、join、cogroup 等转换操作,以及 count、collect、reduce、take、foreach、first、saveAsTextFile 等行动操作。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 本文介绍了如何在 ASP.NET 中设置 Excel 单元格格式为文本,获取多个单元格区域并作为表头,以及进行单元格合并、赋值、格式设置等操作。 ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
author-avatar
有些事想不到
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有