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



推荐阅读
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 利用存储过程构建年度日历表的详细指南
    本文将介绍如何使用SQL存储过程创建一个完整的年度日历表。通过实例演示,帮助读者掌握存储过程的应用技巧,并提供详细的代码解析和执行步骤。 ... [详细]
  • 本文详细介绍如何使用Samba软件配置CIFS文件共享服务,涵盖安装、配置、权限管理及多用户挂载等关键步骤。通过具体示例和命令行操作,帮助读者快速搭建并优化Samba服务器。 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • 本文介绍如何通过创建替代插入触发器,使对视图的插入操作能够正确更新相关的基本表。涉及的表包括:飞机(Aircraft)、员工(Employee)和认证(Certification)。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 本文由瀚高PG实验室撰写,详细介绍了如何在PostgreSQL中创建、管理和删除模式。文章涵盖了创建模式的基本命令、public模式的特性、权限设置以及通过角色对象简化操作的方法。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 在编写顺序控制程序(梯形图)时,一些复杂的功能如时间控制和旋转换刀等难以仅通过位运算实现。因此,功能指令应运而生,旨在简化这些复杂操作的编程过程。本文详细介绍了FANUC PMC中常用的功能指令及其应用场景。 ... [详细]
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社区 版权所有