首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

高性能 MySQL 笔记

MySQL架构和历史 MySQL逻辑架构 第一层处理网络连接等, 比如链接认证授权等 第二层是 MySQL 的核心, 用来解析优化 SQL 语句, 设计缓存, 以及各种函数的实现, 包括存储过程, 触发器...客户端连接]auth[检查用户名密码]access[检查是否有对应资源的处理权限]query[执行SQL 操作]start-->authauth-->accessaccess-->query 并发控制 MySQL...即只对自己事务内部的数据有影响, 也叫不可重复读 REPEATEABLE READ 可重复读, A 事务本身对数据的修改对 A 事务后边的语句也不起作用, 所有的 SQL 操作的数据都来自数据库, 这是 MySQL...默认的事务隔离级别 SERIALIZABLE 可串行化, 这种会在事务操作的每一行记录上都加一个锁, 会严重降低性能, 但是数据一致性比较高 事务日志是顺序 I/O, 日志采用追加的方式 MySQL...存储引擎 InnoDB 支持行级锁 支持事务 全表使用 B+ tree 实现 数据只存在叶子节点上 MyISAM 不支持行级锁, 只支持表锁 数据文件和索引文件分开 不支持事务 可以通过压缩表技术提高性能

1.2K90

高性能MySQL(1)——MYSQL架构

一、Mysql逻辑架构 如果能在头脑中构建出一幅MySQL各组件之间如何协同工作的架构图,就会有助于深入理解MySQL服务器。.../lizhengi/MySQL/高性能MySQL/T.Mysql逻辑图.png)] 从上图可以看出My SQL逻辑结构大致可以分为三层: 第一层结构主要处理客户端与mysql服务端的连接、授权认证、安全等...加锁是实现并发控制的基本方法,MySQL中锁的粒度: 表级锁(服务器层):MySQL独立于存储引擎提供表锁,例如,对于ALTER TABLE语句,服务器提供表锁(table-level lock)。...如果能理解MySQL 在存储引擎和服务层之间处理查询时如何通过API来回交互,就能抓住MySQL的核心 基础架构的精髓。...参考: 《高性能 MySQL 第三版》 MySQL逻辑架构简介 mysql的并发控制

91920
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何实现高性能在线 PDF 预览

    引言 最近接到产品需求,用户需要在我们的站点上在线查看 PDF 文件,并且查看时,用户可以对 PDF 文件的进行旋转、缩放、跳转到指定页码等操作。 这个太简单了,随便找找就一堆轮子。...目前常见的在线 PDF 查看方案: 使用 iframe、embed、object 标签直接加载 采用此方案,只需要直接将 PDF 的在线地址设置为标签的 src 属性 使用第三方库 PDF.js 加载...这个方案麻烦一点,我们需要在项目中引入 PDF.js 这个库,然后再使用 iframe 来加载指定的 HTML 文件(下文代码中的 viewer.html ),并且将需要访问的 PDF 的在线地址作为参数传递进去...本文介绍的问题便是将大的 PDF 文件拆分,然后根据用户的交互行为按需加载,从而达到提升用户在线阅读体验的目的。

    6.5K53

    高性能MySQL学习笔记

    高性能MySQL读书笔记。。。 MySQL架构 并发控制 读写锁 在处理并发读或者写时,通过实现一个由两种类型的锁组成的锁系统来解决问题。...MySQL的存储引擎 默认引擎为InnoDB,一般没有特殊需求直接使用即可。...意思是要用要求的表结构创建一张和源表无关的新表,然后通过重命名和删表操作交换两张表 不是所有的ALTER TABLE操作都会引起表重建,有两种方式: 只修改.frm文件 快速创建myisam索引 创建高性能的索引...索引的三个优点 大大减少服务器需要扫描的数据量 帮助服务器避免排序和临时表 将随机io变为顺序io 高性能的索引策略 独立的列 如果查询中的列不是独立的,则mysql就不会使用索引 前缀索引和索引选择性...压缩(前缀压缩)索引 MyISAM使用前缀压缩来减少索引的大小,从而让更多的索引可以防到内存中,在某些情况下可以极大提高性能

    1.4K20

    MYSQL高性能优化总结

    1.1 前言 在进行MySQL的优化之前必须要了解的就是MySQL的查询过程,很多的查询优化工作实际上就是遵循一些原则让MySQL的优化器能够按照预想的合理方式运行而已。 ?...安全 ---> 数据可持续性 性能 ---> 数据的高性能访问 1.3.2 优化的范围有哪些 存储、主机和操作系统方面: 主机架构稳定性 I/O规划及配置 Swap交换分区...SWAP: MySQL尽量避免使用swap。...修改MySQL的配置参数innodb_flush_method,开启O_DIRECT模式。  ...1.6 数据库优化 SQL优化方向:  执行计划、索引、SQL改写 架构优化方向:  高可用架构、高性能架构、分库分表 1.6.1 数据库参数优化 调整:  实例整体(高级优化,扩展): innodb_thread_concurrency

    1.2K40

    高性能MySQL之缓存

    高性能MySQL之缓存 MySQL中的缓存是用来避免所查询的数据需要对磁盘进行访问,我们知道,磁盘上的访问会比内存的访问速度慢得多,所以,如果你的服务器上之部署了一个MySQL的服务,那么为它配置一个大的缓存无疑是明智之举...在MySQL中,常用的缓存类型包含以下几种: 1、Innodb缓冲池 2、Innodb日志文件和MyISAM数据的操作系统缓存 3、MyISAM键缓存 4、查询缓存 今天我们简单介绍其中的1、2、...,那么MySQL将会跳过所有的阶段,直接从缓存中拿到结果并返回给客户端。...在MySQL中,用于查询缓存的内存被分成了一个个的数据块,这些数据块中存储了自己的类型,大小和存储的数据本身,除了这些数据块之外,还有一个元数据维护的数据结构,当有查询结果需要缓存的时候,MySQL先从大的空间中申请一个数据块用于存储数据结果...,这个数据块的大小是由参数query_cache_min_res_unit决定的,到这里,我们知道MySQL无法为每一个查询的结果精确分配恰好匹配的缓存空间。

    1.3K20

    MySQL在线开启 GTID

    前言: GTID 是 MySQL 5.6 的新特性,可简化 MySQL 的主从切换以及 Failover。...但是当我们开启 binlog 时,MySQL 并没有默认开启 GTID ,好在 GTID 可以在线开启,本篇文章我们一起来看下如何在线开启 GTID ,如果你的数据库实例原来未启用 GTID ,可以参考本篇文章来开启...在线开启 GTID 步骤 我们以 MySQL 5.7.23 社区版为例,演示下如何在线开启 GTID 。...第四步:设置GTID_MODE = ON_PERMISSIVE 主从实例均执行: SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE; 第五步:确保在线的匿名事务数为 0 ,设置...gtid_mode = ON enforce_gtid_consistency = ON 总结: 经过以上步骤,我们已完成在线开启 GTID ,整体过程还是比较平滑的,一定要注意按顺序修改,若有主从库,

    3.3K20

    高性能MySQL(一):MySQL架构与历史

    文章目录 前言 MySQL架构与历史 MySQL逻辑架构 连接管理 优化与执行 并发控制 锁粒度 表锁 行级锁 事务 隔离级别 事务日志 前言 我准备开一个新的系列,这是我以前接触不多的新领域...本系列取材于《高性能MySQL》第三版,是我的学习笔记。...---- MySQL架构与历史 MySQL逻辑架构 第二层架构是MySQL比较有意思的部分,大多数MySQL的核心服务功能都在这一层,包括增删查改以及所有的内置函数。...表锁 表锁是MySQL中最基本的锁策略,也是开销最小的策略。它会锁定整张表。...可重复度是MySQL默认事务隔离级别。 可串行化:这个是最高的隔离级别了,它通过强制要求事务串行执行,避免了前面所说的幻读问题。

    88840

    高性能MySQL【笔记】超详细

    ,然后和提供服务的主库进行切换 * 二是通过“影子拷贝”,创建一张新表,然后通过重命名和删表操作交换两张表及里面的数据 2.快速创建MyISAM索引,先禁用索引,导入数据,然后重新启用索引 五、创建高性能的索引...索引可以将随机I/O变为顺序I/O 2.索引三星系统: * 索引将相关的记录放到一起则获得一星 * 如果索引中的数据顺序和查找中的排序一致则获得二星 * 如果索引中的列包含了查询中需要的全部列则获得三星 C.高性能的索引策略...占满事务日志、耗尽系统资源、阻塞很多小的但重要的查询 3.分解关联查询优势: * 让缓存的效率更高 * 将查询分解后,执行单个查询可以减少锁的竞争 * 在应用层做关联,可以更容易对数据库进行拆分,更容易做到高性能和可扩展...正确地使用内存量对高性能是至关重要的,内存消耗分为两类:可以控制的内存和不可以控制的内存 2.配置内存: * 确定可以使用的内存上限 * 确定每个连接MySQL需要使用多少内存 * 确定操作系统需要多少内存才够用...在这样的环境中,并发可能成为瓶颈 C.平衡内存和磁盘资源 1.配置大量内存最终目的是避免磁盘I/O,最关键的是平衡磁盘的大小、速度、成本和其他因素,以便为工作负载提供高性能的表现 2.设计良好的数据库缓存

    1.4K23

    高性能Mysql》学习笔记(二)

    高性能Mysql》学习笔记(二) 前言 接续上文继续介绍:《高性能Mysql》学习笔记(一)。...mysql 时间线 基准测试 为什么需要基准测试 基准测试策略 基于mysql 单独测试 - 单组件式 对整个系统整体测试 - 集成式 使用整个系统测试原因主要如下 如果不需要关注整体应用,只关注...类似工业标准的测试工具 dbt2 免费的toc-c oltp 测试工具 percona's tpcc-mysql tool mysql 高性能并发作者自己制作 sysbench 多线程系统压测工具 支持...使用 show profile mysql 5.1 之后版本引入,默认是禁用的,但是可以通过服务器变量在连接中动态更改mysql> set profiling = 1 开启后会测量查询执行相关操作的状态...让 Mysql 认为是 第一张表 释放读锁 使用 repair table 来重新创建表的索引。

    68830

    Mysql高性能优化规范建议

    尽量做到冷热数据分离,减小表的宽度 Mysql限制每个表最多存储4096列,并且每一行数据的大小不能超过65535字节。...禁止在线上做数据库压力测试 10. 禁止从开发环境,测试环境直接连接生成环境数据库 ---- 数据库字段设计规范 1....而且对于这种数据,Mysql还是要进行二次查询,会使sql性能变得很差,但是不是说一定不能使用这样的数据类型。...因为mysql优化器在选择如何优化查询时,会根据统一信息,对每一个可以用到的索引来进行评估,以生成出一个最好的执行计划,如果同时有很多个索引都可以用于查询,就会增加mysql优化器生成执行计划的时间,同样会降低查询性能...同时对于关联操作来说,会产生临时表操作,影响查询效率,Mysql最多允许关联61个表,建议不超过5个。 10.

    1.1K30
    领券