首页 > 数据库 >Linux中,MySQL存储引擎

Linux中,MySQL存储引擎

时间:2024-07-30 16:54:01浏览次数:15  
标签:存储 MySQL 支持 引擎 InnoDB MyISAM Linux

存储引擎

在数据库中保存的是一张张有着千丝万缕关系的表,所以表设计的好坏,将直接影响着整个数据库。而在设计表的时候,最关注的一个问题是使用什么存储引擎。
MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的、不同的功能和能力。通过选择不同的技术,能够获得额外的速度或者功能,从而改善应用的整体性能。
例如,如果在研究大量的临时数据,也许需要使用内存类存储引擎。内存存储引擎能够在内存中存储相关数据。又或者,需要使用一个支持事务处理的数据库(以确保事务处理不成功时数据的回退能力)。
这些不同的技术以及配套的相关功能在 MSQL中被称作存储引擎(也称作表类型)。MySQL默认配置了许多不同的存储引擎,可以预先设置或者在 MySQL服务器中启用。选择适用于服务器、数据库和表格的存储引擎,可以在存储信息、检索数据时,提供最大的灵活性。
关系数据库表是用于存储和组织信息的数据结构,可以将表理解为由行和列组成的表格,类似于 Excel电子表格的形式。有的表简单、有的表复杂、有的表根本不用来存储任何长期数据、有的表读取时非常快,但是插入数据时却很差。在实际开发过程中,就可能需要各种各样的表,不同的表就意味着存储不同类型的数据,数据的处理上也会存在着差异。那么,对于MySQL米说,它提供了很多种类型的存储引擎(或者说不同的表类型),根据对数据处理的需求,可以选择不同的存储引擎,从而最大限度的利用MySQL强大的功能。
在 MySQL客户端中,使用以下命令可以査看 MySQL支持的引擎。

查看支持的引擎

mylsam存储引擎

空间:256T

功能:b树索引、不支持事务、支持全文索引、插入和查询速度快

MyISAM 存储引擎不支持事务,也不支持外键,特点是访问速度快,对事务完整性没有要求,以 SELECT、INSERT为主的应用基本都可以使用这个引擎来创建表。
每个MyISAM表在磁盘上存储成3个文件,其中文件名和表名都相同,但是扩展名分别为:
tm(存储表定义)
MYD(MYData,存储数据)
MYI(MYIndex,存储索引)

MyISAM 表还支持3种不同的存储格式:
静态(固定长度)表
动态表
压缩表

innoDB存储引擎

空间64T

功能:支持b树索引、支持数据缓存、支持外键、不支持全文索引、支持行级锁定。

InnoDB 是一个健壮的事务型存储引擎,这种存储引擎已经被很多互联网公司使用,为用户操作非常大的数据存储提供了一个强大的解决方案。MySQL 从5.5.5版本开始,默认的存储引擎为InnoDB。InnoDB 存储引擎还引入了行级锁定和外键约束,在以下场景中使用InnoDB 存储引擎是最理想的选择:
更新密集的表:InnoDB存储引整特别适合处理多重并发的更新请求。
事务:InnoDB 存储引擎是支持事务的标准MySQL存储引。
自动灾难恢复:与其它存储引擎不同,InnoDB表能够自动从灾难中恢复。
外键约束:MySQL支持外键的存储引擎只有InnoDB.
支持自动增加列 AUTO INCREMENT 属性。
一般来说,如果需要事务支持,并且有较高的并发读取频率,InnoDB是不错的选择。
而 MyISAM 和InnoDB 两种存储引擎的区别主要表现在以下几个方面。

InnoDB 支持事务,MyISAM不支持,这一点是非常重要的。事务是一种高级的处理方式,如对一些表中的列进行增删改的过程中只要哪个出错还可以回滚还原,而 MyISAM就不可以。
MyISAM 适合查询、插入为主的应用,InnoDB 适合频繁修改以及涉及到安全性较高的应用。
InnoDB 支持外键,MyISAM 不支持。
从 MySQL5.5.5 以后,InnoDB 是默认引擎。
MySQL 从5.6 版本开始 InnoDB 引擎才支持 FULLTEXT 类型的索引,
InnoDB 中不保存表的行数,如 select count(*)from table 时,InnoDB 需要扫描一遍整个表来计算有多少行,但是 MyISAM 只要简单的读出保存好的行数即可。需要注意的是,当 count(*)语句包含 where 条件时 MyISAM 也需要扫描整个表。
对于自增长的字段,InnoDB中必须包含只有该字段的索引,但是在 MyISAM 表中可以和其他字段一起建立组合案引。
清空整个表时,InnoDB 是一行一行的删除,效率非常慢。MyISAM 则会重建表。InnoDB 支持行锁(某些情况下还是锁整表,如 update table set a=1 where user like"%ee%;)。

mylsam与innodb选择使用

MyISAM 和 InnoDB 是 MySQL 数据库提供的两种存储引擎。两者的优劣可谓是各有千秋。InnoDB会支持一些关系数据库的高级功能,如事务功能和行级锁,MyISAM 不支持。MyISAM 的性能更优,占用的存储空间少。所以,选择何种存储引擎,视具体应用而定。
(1)如果应用程序一定要使用事务,毫无疑问要选择InnoDB 引擎。但要注意,InnoDB的行级锁是有条件的。在 where 条件没有使用主键时,照样会锁全表。比如 DELETE FROMmytable 这样的删除语句。
(2)如果应用程序对查询性能要求较高,就要使用MyISAM了。MyISAM 索引和数据是分开的,而且其索引是压缩的,可以更好地利用内存。所以它的查询性能明显优于InnoDB。压缩后的索引也能节约一些磁盘空间。
有人说 MyISAM 只能用于小型应用,其实这只是一种偏见。如果数据量比较大,这是需要通过升级架构来解决,比如分表分库,而不是单纯地依赖存储引警。

修改默认的存储引擎

修改默认引擎有四种方法,分别如下:

其他的一些引擎

memory:内存 b树索引 hash索引、不支持事务
archive:none、不支持事物、不支持全文索引
 

标签:存储,MySQL,支持,引擎,InnoDB,MyISAM,Linux
From: https://blog.csdn.net/ssg18336543974/article/details/140800843

相关文章

  • MySQL 备份与恢复
    目录4.1MySQL数据库备份概述4.1.1数据备份的重要性4.1.2数据库备份类型1.从物理与逻辑的角度分类2.从数据库的备份策略角度分类4.1.3常见的备份方法1.物理冷备份2.专用备份工具mysqldump或mysqlhotcopy3.通过启用二进制日志进行增量备份4.通过第三方工具备份......
  • MySQL 数据库初体验
    1.1数据库简介1.1.1使用数据库的必要性可以结构化存储大量的数据信息,方便用户进行有效的检索和访问。可以有效地保持数据信息的一致性、完整性,降低数据几余。可以满足应用的共享和安全方面的要求。1.1.2数据库的基本概念1、数据    描述事物的符号记录称为数据......
  • mysql中的mysqladmin
    mysqladmin是一个MySQL服务器命令行工具,它由DatabaseAdministrators执行一些基本的命令诸如更改root密码、监控mysql进程、重新加载权限、检查服务器状态等任务。mysqadmin常用命令#mysqladmin帮助mysqladmin--help#连接mysql,-h[hostipaddress]mysqladmin-h......
  • MySQL 学习笔记 进阶(存储过程 下,存储函数,触发器,锁 上)
    存储过程 存储过程-if判断语法IF条件1THEN......ELSEIF条件2THEN......ELSE......ENDIF; 存储过程-参数 用法CREATEPROCEDURE存储过程名称([IN/OUT/INOUT参数名参数类型])BEGIN--SQL语句END; 存储过程-c......
  • Mysql设置自增ID
    1、创建新表时设置ID自增:CREATETABLEyour_table_name(idINTNOTNULLAUTO_INCREMENT,nameVARCHAR(255),PRIMARYKEY(id));2、为现有表添加自增ID:ALTERTABLEyour_table_nameADDCOLUMNidINTNOTNULLAUTO_INCREMENTPRIMARYKEY;3......
  • Mysql 行列转换
    mysql用case CREATETABLE`stu`(`name`varchar(255)DEFAULTNULL,`subject`varchar(255)CHARACTERSETutf8mb4COLLATEutf8mb4_0900_ai_ciDEFAULTNULL,`result`varchar(255)DEFAULTNULL)ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_090......
  • linux make menuconfig 相关
    一、makemenuconfig相关文件1根目录下script2各层目录下的Kconfig文件3各层下的makefile文件4根目录下的.config文件,arm/arch/下的config文件5linux根目录下的include/generated/autoconf.h二、各文件作用1script下面是图形绘制相关脚本,无需关心2Kconfig,配置界......
  • Linux-kali-ubuntu手动更新
    、Ubuntu主要更新升级命令介绍我们先来看看这几个命令的功能和区别,这几个命令看起来很相似,作用上有较大差别千万不要弄错了。1)、apt-getupdate$sudoapt-getupdate2)、apt-getupgrade这个命令,会把本地已安装的软件,与刚下载的软件列表里对应软件进行对比,如果发现已安装的软......
  • 如何使用 python 在 influxdb 中创建组织和存储桶
    如何使用python在influxdb中创建组织和存储桶?我有一个python脚本,用于在influxdb中创建组织和存储桶,但它无法工作并返回未经授权的响应任何人可以使用influxdbapi帮助我解决这个问题吗?HTTPresponsebody:{"code":"unauthorized","message":"write:org......
  • mysql 8 临时表空间
    mysql>optimizetableiuap_apdoc_coredoc.productapplyrange;+--------------------------------------+----------+----------+-------------------------------------------------------------------+|Table|Op|Msg_type|......