【mysql】引擎、死锁现象

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: 文章目录前言一、概念1.1 引擎

一、概念

1.1 引擎

  • 引擎是一种储存机制、索引技巧,不同的引擎拥有不同的锁定水平
  • mysql数据库中负责执行I/O操作的组件



1.2 存储格式

存储方式 解释 优势 劣势
静态表 非可变字段,记录的为固定长度 存储迅速,故障易恢复 占用空间大
动态表 包含可变字段,记录长度不固定 占用空间少 容易有碎片,恢复麻烦
压缩表 由myisamchk工具创建,压缩每条记录 访问开支非常小 较麻烦

二、常用引擎

2.1 MyISAM

2.1.1 特点

  • 不支持事务/外键约束
  • 文件与索引分开储存
  • 占用资源较少
  • 单独读/写速度快
  • 读写互相阻塞
  • 表级别锁定
  • 支持动态表、静态表、压缩表的存储方式

2.1.2 存储方式

文件后缀 存储内容
.frm 存储表结构
.MYD 存储表数据
.MYI 存储索引

2.2.3 应用场景

  • 单独读取/写入较多的场景
  • 不需要事务支持的场景
  • 服务器硬件资源较差的场景

2.2 InnoDB(5.5.5版本后的默认引擎)

2.2.1 特点

  • 支持事务/外键约束
  • 占用空间大
  • 索引与表存储在一起
  • 读写可同时进行
  • 行/表级锁定(有索引:行级锁、没索引:表级锁、全文索引:表级锁)

2.2.2 应用场景

  • 需要事务支持
  • 需要行级锁定
  • 业务数据更新频繁(论坛类)
  • 业务数据一致性要求高(金融业)

三、命令

3.1 临时修改引擎

show table status from 库名 where name='表名'\G   #查看表引擎类型
alter table 表名 engine=引擎;           #修改表引擎类型
create table 表名(字段1 类型...) engine=引擎;     #创建表时选择引擎类型

3.2 修改默认引擎

vim /etc/my.cnf             #进入mysql配置文件
  [mysqld]              #在mysqld子配置文件下
  default-storage-engine=引擎;    #修改默认引擎
systemctl restart mysql.service     #重启mysql服务后生效

四、死锁

4.1 死锁原因

  • 不同事务相互等待对方资源,最后形成环路造成死锁

4.2 解决方案

  • 关闭某一个事务
  • rollback回档

4.3 优化方案

  • 以固定顺序访问表和行
  • 大事务拆成小事务执行
  • 同一事务,尽可能一次锁定所有需要资源
  • 条件允许的情况下,降低隔离级别
  • 添加合理的索引,减小死锁的概率

五、思维导图

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
9月前
|
SQL 存储 关系型数据库
MySQL内存引擎:Memory存储引擎的适用场景
MySQL Memory存储引擎将数据存储在内存中,提供极速读写性能,适用于会话存储、临时数据处理、高速缓存和实时统计等场景。但其数据在服务器重启后会丢失,不适合持久化存储、大容量数据及高并发写入场景。本文深入解析其特性、原理、适用场景与限制,并提供性能优化技巧及替代方案比较,助你合理利用这一“内存闪电”。
|
9月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1452 152
|
9月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
1061 156
|
9月前
|
存储 关系型数据库 MySQL
介绍MySQL的InnoDB引擎特性
总结而言 , Inno DB 引搞 是 MySQL 中 高 性 能 , 高 可靠 的 存 储选项 , 宽泛 应用于要求强 复杂交易处理场景 。
385 15
|
9月前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
11月前
|
关系型数据库 MySQL Java
字节面试: MySQL 百万级 导入发生的 “死锁” 难题如何解决?“2序4拆”,彻底攻克
字节面试: MySQL 百万级 导入发生的 “死锁” 难题如何解决?“2序4拆”,彻底攻克
字节面试: MySQL 百万级 导入发生的 “死锁” 难题如何解决?“2序4拆”,彻底攻克
|
存储 SQL 缓存
mysql数据引擎有哪些
MySQL 提供了多种存储引擎,每种引擎都有其独特的特点和适用场景。以下是一些常见的 MySQL 存储引擎及其特点:
323 0
|
存储 关系型数据库 MySQL
从新手到高手:彻底掌握MySQL表死锁
通过本文的介绍,希望你能深入理解MySQL表死锁的概念、原因、检测方法及解决方案,并在实际开发中灵活应用这些知识,提升系统的稳定性和性能。
1215 9
|
存储 关系型数据库 MySQL
MySQL引擎InnoDB和MyISAM的区别?
InnoDB是MySQL默认的事务型存储引擎,支持事务、行级锁、MVCC、在线热备份等特性,主索引为聚簇索引,适用于高并发、高可靠性的场景。MyISAM设计简单,支持压缩表、空间索引,但不支持事务和行级锁,适合读多写少、不要求事务的场景。
397 9
|
SQL 算法 关系型数据库
面试:什么是死锁,如何避免或解决死锁;MySQL中的死锁现象,MySQL死锁如何解决
面试:什么是死锁,死锁产生的四个必要条件,如何避免或解决死锁;数据库锁,锁分类,控制事务;MySQL中的死锁现象,MySQL死锁如何解决

推荐镜像

更多