《高性能MYSQL》逻辑结构-读书笔记

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介: 高性能MYSQL笔记 1. MYSQL逻辑结构 MYSQL逻辑结构有三层,分别为  1. 连接/线程处理:实现连接处理,授权认证,安全等  2. 服务层:该层主要有缓存,解析,处理,优化以及跨存储引擎如存储过程,触发器,视图等  3. 存储引擎:主要负责数据读取和存储。

高性能MYSQL笔记

1. MYSQL逻辑结构

MYSQL逻辑结构有三层,分别为 
1. 连接/线程处理:实现连接处理,授权认证,安全等 
2. 服务层:该层主要有缓存,解析,处理,优化以及跨存储引擎如存储过程,触发器,视图等 
3. 存储引擎:主要负责数据读取和存储。根据服务器层提供的执行计划,进行语句的执行。

2. 并发控制

并发控制是当多个线程或者事务同时操作同一数据时,如何控制才能保证数据一致性。利用锁机制和事务特点保证数据一致性。

可按锁的粒度进行划分,可分为行级锁和表级锁。事务中不同隔离级别会有不同的锁策略。 不同隔离级别加锁策略 
行级锁:InnoDB和XtraDB支持。行级锁是建立在索引上,不是行记录。

事务

ACID:原子性,一致性,隔离性,持久性 
原子性:事务内要么全部成功提交,只要有一个执行失败,则会全部回滚。通过undolog实现原子性。 
一致性:保证事务修改前后整体数据保持一致。例子,用户A通过银行系统转账100元给用户B,这时需要确保用户B增加100元,而用户A需要保证减少了100元。 
隔离性:事务之间的可见性。通过锁机制实现隔离性。隔离级别有未提交读,已提交读,可重复读,序列化读。默认是可重复读。 
持久性:保证事务提交后,修改的数据会永久的保存在数据库中。通过redolog实现持久性。 
两阶段锁策略

一阶段锁策略:当事务开始前,会将所有的锁请求完,若其中一个锁不能阻塞,则所有锁将会等待。请求成功后,直到事务尾部会将所有锁释放。不会产生死锁的问题。因为锁时间相对较长,所以并发度不高。

两阶段锁策略:将事务分为加锁和解锁两个阶段。在加锁阶段,每条语句可以根据数据获取对应的锁,此时可以操作数据,但不能解锁。直到事务commit/rollback时才会解锁。加锁时间较短,所以并发度较高。但是会因为加锁的顺序不同导致产生死锁。 
参考:MYSQL-两阶段加锁协议

死锁:产生的原因是因为事务中加锁顺序不同。处理办法是持有较少行级排他锁进行回滚。

MVCC多版本并发控制:通过每行记录后面保存两个列存储创建和删除时的系统版本号(时间戳)。

3.存储引擎

创建表时,MySQL会在数据库子目录下创建一个同名.frm文件保存表的定义

InnoDB: 处理大量的短期事务, 通过间隙锁锁定查询涉及的行和索引中的间隙进行锁定,防止幻影行的插入, 基于聚簇索引创建表.通过一些机制和工具支持真正的热备份.一般优先考虑InnoDB存储引擎

MyISAM: 包括全文索引,压缩,空间函数,延迟更新索引键等特性,不支持事务和行级锁,崩溃后无法安全恢复.对于只读数据,表小可以忍受修复操作可以使用该引擎. 
如果要使用全文索引,建议用InnoDB加上Sphinx组合替换MyISAM

使用引擎考虑:事务,备份,崩溃恢复,特有特性 
日志型应用: MyISAM 或者Archive,因为开销低插入速度快更为适合 
对于大数据量需要建立数据仓库,Infobright和TokuDB是比较好的解决方案

原文地址 https://blog.csdn.net/Yoga0301/article/details/81837423
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
9月前
|
消息中间件 缓存 弹性计算
纯PHP+MySQL手搓高性能论坛系统!代码精简,拒绝臃肿
本内容分享了一套经实战验证的社交系统架构设计,支撑从1到100万用户的发展,并历经6次流量洪峰考验。架构涵盖客户端层(App、小程序、公众号)、接入层(API网关、负载均衡、CDN)、业务服务层(用户、内容、关系、消息等服务)、数据层(MySQL、Redis、MongoDB等)及运维监控层(日志、监控、告警)。核心设计包括数据库分库分表、多级缓存体系、消息队列削峰填谷、CQRS模式与热点数据动态缓存。同时提供应对流量洪峰的弹性伸缩方案及降级熔断机制,并通过Prometheus实现全链路监控。开源建议结构清晰,适合大型社交平台构建与优化。
380 11
|
4月前
|
SQL 关系型数据库 MySQL
索引设计实战:如何创建高性能MySQL索引
本文深入解析MySQL索引设计的核心原则与实战技巧,涵盖索引选择性、复合索引、性能优化及常见陷阱等内容,通过实际案例帮助开发者创建高效索引,显著提升数据库查询速度,助你打造高性能数据库系统。
|
存储 关系型数据库 MySQL
阿里面试:为什么要索引?什么是MySQL索引?底层结构是什么?
尼恩是一位资深架构师,他在自己的读者交流群中分享了关于MySQL索引的重要知识点。索引是帮助MySQL高效获取数据的数据结构,主要作用包括显著提升查询速度、降低磁盘I/O次数、优化排序与分组操作以及提升复杂查询的性能。MySQL支持多种索引类型,如主键索引、唯一索引、普通索引、全文索引和空间数据索引。索引的底层数据结构主要是B+树,它能够有效支持范围查询和顺序遍历,同时保持高效的插入、删除和查找性能。尼恩还强调了索引的优缺点,并提供了多个面试题及其解答,帮助读者在面试中脱颖而出。相关资料可在公众号【技术自由圈】获取。
|
8月前
|
存储 关系型数据库 MySQL
【免费动手教程上线】阿里云RDS MySQL推出大容量高性能存储:高性能本地盘(最高16TB存储空间)、高性能云盘(最高64TB存储空间)
阿里云RDS MySQL提供高性能本地盘与高性能云盘等存储方案,满足用户大容量、低延迟需求。高性能本地盘单盘最大16TB,IO延时微秒级;高性能云盘兼容ESSD特性,支持IO性能突发、BPE及16K原子写等能力。此外,阿里云还提供免费动手体验教程,帮助用户直观感受云数据库 RDS 存储性能表现。
|
11月前
|
数据管理 关系型数据库 MySQL
数据管理服务DMS支持MySQL数据库的无锁结构变更
本文介绍了使用Sysbench准备2000万数据并进行全表字段更新的操作。通过DMS的无锁变更功能,可在不锁定表的情况下完成结构修改,避免了传统方法中可能产生的锁等待问题。具体步骤包括:准备数据、提交审批、执行变更及检查表结构,确保变更过程高效且不影响业务运行。
662 2
|
JSON 关系型数据库 MySQL
MySQL JSON数据存储结构与操作
通过本文的介绍,我们了解了MySQL中JSON数据类型的基本操作、常用JSON函数、以及如何通过索引和优化来提高查询性能。JSON数据类型为存储和操作结构化数据提供了灵活性和便利性,在现代数据库应用中具有广泛的应用前景。希望本文对您在MySQL中使用JSON数据类型有所帮助。
1346 0
|
安全 关系型数据库 MySQL
揭秘MySQL海量数据迁移终极秘籍:从逻辑备份到物理复制,解锁大数据迁移的高效与安全之道
【8月更文挑战第2天】MySQL数据量很大的数据库迁移最优方案
1528 17
|
SQL 关系型数据库 MySQL
Mysql:如何自定义导出表结构
通过以上方法,你可以灵活地自定义导出MySQL中的表结构,以满足不同的需求和场景。在进行操作的时候要注意权限问题以及路径问题,确保MySQL用户有权限写入指定的文件路径。在执行导出任务之前,还应确保你对数据库及其内容有足够的了解,以避免不必要的数据丢失或损坏。
422 1
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用问题之要将MySQL同步到Doris,并设置整库同步,只变更库名、表名和表结构都不变,该如何设置
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。

推荐镜像

更多