mysql学习总结(高性能MySQL笔记)

本文深入探讨MySQL的架构特点,包括处理与存储分离的设计理念、三层结构详解、事务管理与锁机制。同时,文章还详细讲解了索引设计原则、表结构优化方法、查询优化策略等内容。

1.mysql基本情况

mysql架构

    处理与存储分离

    三层结构:连接等基本功能层,mysql核心处理层(查询缓存,sql解析,优化器),存储引擎层

    共享锁与排他锁,锁粒度与锁开销,表锁与行级锁,服务器层与存储引擎层加锁。

    数据库事务,数据库四种类型的事务:读未提交,读已提交,可重复读,序列化,这四种类型的分类分别从事务是否提交,对修改是否透明,对插入删除是否透明进行区分的。死锁,事务日志,mysql的锁主要是在存储引擎层实现,事务全部在存储引擎层实现

    多版本控制mvcc机制(http://blog.youkuaiyun.com/chen77716/article/details/6742128)

    存储引擎:innodb 设计目标:处理大量短事务,性能好,崩溃能够自动恢复,使用mvcc来支持高并发(http://blog.youkuaiyun.com/chen77716/article/details/6742128),实现了四个标准的隔离级别,innodb表与聚簇索引,聚簇索引的原理及优缺点;myisam引擎的锁与并发,索引等特性。csv引擎,memory引擎,archive引擎,面向列的第三方引擎,



5.index设计

索引的基本功能:一种帮助快速找到记录的数据结构

索引种类:B-tree索引,hash索引,全文索引等。

索引的优点:能够大大减少服务器需要扫描的数据量(一个是不需全表扫描,一个是可以从索引中直接获取到一部分数据,无需访问表),能够帮助服务器避免一些排序和临时表(对于排序索引有效),能够将随机IO变为顺序IO(对于排序索引有效)。

三星索引:索引将相关的记录放在一起  一星,索引中的数据顺序和查找的排列顺序一致  一星,索引中的列包含了查找中的全部列  一星

索引的缺点:索引针对小型表和超大型表效果不太好,小型表本来全表扫描的代价很小,超大型表的索引维护成本很高。

高效索引:

       where 子句中需要索引的列独立放在条件符号一侧

       前缀索引与选择性    一般用于像text等长字符串的列中

       多列索引与索引合并

       索引列顺序

       聚簇索引

       覆盖索引

       索引扫描与排序

       压缩索引,冗余和重复索引,未使用的索引,索引和锁。


4.schema设计

schema的一些基本原则:1.更小的通常更好,节省空间,2.简单类型一般更好,节省CPU时间,3.尽量避免null,避免对null单独处理

首先,为列选择合适的大类型,然后再选择具体的小类型。

数字类型:整数和实数

整数有tinyint(8), smallint(16), mediumint(24), int(32), bigint(64),在mysql内部计算时,一般都转为bigint再进行计算

实数有float(32),double(64),decimal(65个数字,支持精确计算)

字符串类型有varchar(变长,不截断后面空格,有1-2字节保存长度),char(定长,截断后面空格,保存时自动补空格),这些是在硬盘上的结果,但将数据读到内存后,varchar的 变长可能会变成定长。

blob与text,前者使用二进制形式存储,后者使用字符串存储,只会排序前面一小部分数据,可以通过max_sort_length参数设置。

有时可以将一些字符串转成enum类型,enum存储格式是整数类型,并在表文件中保存了整数到enum的映射查询表,使得存储更紧凑

日期和时间类型:year,date,datetime,timestamp等,

datetime使用8字节整数存储,存储范围1001年-9999年,timestamp1970年-2038年,使用4字节整数存储

位数据类型:bit和set,set与enum的异同

mysql schema设计中的一些常见问题

范式与反范式的优缺点与权衡

合适地使用缓存表与汇总表

快速地修改schema的一些技巧



2.基准测量


3.性能剖析

性能优化的原则:1.性能即响应时间,2.无法测量就无法有效地优化


6.查询优化

查询优化指的是缩短对数据库请求的响应时间。

查询任务可以细分为一系列子任务:比如从应用通过网络将查询命令发送到mysql服务器,服务器解析查询命令,生成执行计划,存储引擎执行查询,服务器返回数据等步骤,对应地,查询优化可以在上面的每一个子任务中进行。

衡量查询开销的最简单的三个指标:

响应时间

查询的行数

返回的行数

其中响应时间由排队时间和服务时间两部分组成。

优化数据访问:

是否检索了大量超过需要的数据:有的sql语句从数据库中请求多过多行数据回来后,却只需要使用少数行数据(比如前10行)丢掉了绝大部分数据;有的sql语句读取了太多列的数据,而实际上应用只需要其中的几列数据;有时候应用可以缓存数据,根本可以不用去数据库中重复读取。

mysql服务器层是否在分析大量超过需要的数据行:如果扫描的行数大大超过了返回的数据行,那么可以从下面的几方面去优化:1,是否能够通过建立合适索引,达到索引覆盖扫描,2,改变库表结构,如使用单独汇总表,3,重写这个复杂查询,让mysql能够以更优化的方式执行这个查询。

重构查询方式:

首先,如果有些复杂的sql语句很耗时,也许可以重构为一组简单查询,然后在应用程序中进行关联处理,从而降低数据库服务器的压力:可行性,有利的一面是一般来说网络带宽和网卡不是访问数据的瓶颈,mysql的连接机制也是的建立连接和断开连接的开销很轻量级,不利的地方是一般来说,mysql内部每秒能够扫描内存中上百万行数据,相对来说,mysql响应数据给应用程序的速度就慢很多。

其次,将一些耗时耗资源很高的sql切分成一组sql分时段执行,能够降低对服务器的影响,提高可用性。

再次,对一些关联查询可以进行分解,分解成针对单表的一组查询,然后在应用端进行关联。这样做有这么一些优点:1.使得应用端的缓存效率更高,缓存复用几率更大,2.降低对数据库锁的竞争,3.更容易对数据库进行拆分,提高数据库层的可扩展性。

mysql内部查询过程分析

mysql客户端/服务器通信协议

查询缓存

优化器处理

      语法解析与预处理,执行计划优化方式(静态优化和动态优化),数据和索引统计信息使用,关联查询的原理,执行计划的生成方式,关联查询的优化方式,排序优化的方式。

执行引擎

结果返回


mysql查询优化器的一些局限性

针对查询优化器的一些提示(hint)

一些特定类型的优化






【电力系统】单机无穷大电力系统短路故障暂态稳定Simulink仿真(带说明文档)内容概要:本文档围绕“单机无穷大电力系统短路故障暂态稳定Simulink仿真”展开,提供了完整的仿真模型与说明文档,重点研究电力系统在发生短路故障后的暂态稳定性问题。通过Simulink搭建单机无穷大系统模型,模拟不同类型的短路故障(如三相短路),分析系统在故障期间及切除后的动态响应,包括发电机转子角度、转速、电压和功率等关键参数的变化,进而评估系统的暂态稳定能力。该仿真有助于理解电力系统稳定性机理,掌握暂态过程分析方法。; 适合人群:电气工程及相关专业的本科生、研究生,以及从事电力系统分析、运行与控制工作的科研人员和工程师。; 使用场景及目标:①学习电力系统暂态稳定的基本概念与分析方法;②掌握利用Simulink进行电力系统建模与仿真的技能;③研究短路故障对系统稳定性的影响及提高稳定性的措施(如故障清除时间优化);④辅助课程设计、毕业设计或科研项目中的系统仿真验证。; 阅读建议:建议结合电力系统稳定性理论知识进行学习,先理解仿真模型各模块的功能与参数设置,再运行仿真并仔细分析输出结果,尝试改变故障类型或系统参数以观察其对稳定性的影响,从而深化对暂态稳定问题的理解。
本研究聚焦于运用MATLAB平台,将支持向量机(SVM)应用于数据预测任务,并引入粒子群优化(PSO)算法对模型的关键参数进行自动调优。该研究属于机器学习领域的典型实践,其核心在于利用SVM构建分类模型,同时借助PSO的全局搜索能力,高效确定SVM的最优超参数配置,从而显著增强模型的整体预测效能。 支持向量机作为一种经典的监督学习方法,其基本原理是通过在高维特征空间中构造一个具有最大间隔的决策边界,以实现对样本数据的分类或回归分析。该算法擅长处理小规模样本集、非线性关系以及高维度特征识别问题,其有效性源于通过核函数将原始数据映射至更高维的空间,使得原本复杂的分类问题变得线性可分。 粒子群优化算法是一种模拟鸟群社会行为的群体智能优化技术。在该算法框架下,每个潜在解被视作一个“粒子”,粒子群在解空间中协同搜索,通过不断迭代更新自身速度与位置,并参考个体历史最优解和群体全局最优解的信息,逐步逼近问题的最优解。在本应用中,PSO被专门用于搜寻SVM中影响模型性能的两个关键参数——正则化参数C与核函数参数γ的最优组合。 项目所提供的实现代码涵盖了从数据加载、预处理(如标准化处理)、基础SVM模型构建到PSO优化流程的完整步骤。优化过程会针对不同的核函数(例如线性核、多项式核及径向基函数核等)进行参数寻优,并系统评估优化前后模型性能的差异。性能对比通常基于准确率、精确率、召回率及F1分数等多项分类指标展开,从而定量验证PSO算法在提升SVM模型分类能力方面的实际效果。 本研究通过一个具体的MATLAB实现案例,旨在演示如何将全局优化算法与机器学习模型相结合,以解决模型参数选择这一关键问题。通过此实践,研究者不仅能够深入理解SVM的工作原理,还能掌握利用智能优化技术提升模型泛化性能的有效方法,这对于机器学习在实际问题中的应用具有重要的参考价值。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值