热门标签 | 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存储引擎有多种,这里只是简单的介绍了常用的两种情况,其他版本的还的大家多多去了解



推荐阅读
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • 利用存储过程构建年度日历表的详细指南
    本文将介绍如何使用SQL存储过程创建一个完整的年度日历表。通过实例演示,帮助读者掌握存储过程的应用技巧,并提供详细的代码解析和执行步骤。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • Navicat Premium 15 安装指南及数据库连接配置
    本文详细介绍 Navicat Premium 15 的安装步骤及其对多种数据库(如 MySQL 和 Oracle)的支持,帮助用户顺利完成软件的安装与激活。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 使用C#开发SQL Server存储过程的指南
    本文介绍如何利用C#在SQL Server中创建存储过程,涵盖背景、步骤和应用场景,旨在帮助开发者更好地理解和应用这一技术。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • 在使用SQL Server进行动态SQL查询时,如果遇到LIKE语句无法正确返回预期结果的情况,通常是因为参数传递方式不当。本文将详细探讨这一问题,并提供解决方案及相关的技术背景。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 本文详细介绍了 MySQL 的查询处理流程,包括从客户端连接到服务器、查询缓存检查、语句解析、查询优化及执行等步骤。同时,深入探讨了 MySQL 中的乐观锁机制及其在并发控制中的应用。 ... [详细]
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社区 版权所有