MYSQL

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: MYSQL

结构化查询语句分类:



image.png


数据引擎:



1.InnerDB:业务数据表,要保证数据的安全性,这种表当中会出现大量的增删改(写)操作。必须要有一个主键。


(1)聚集索引


(2)保存的是数据本身


(3)主键查询高效,辅助索引查两遍


2.MyISAM:增量数据表,通常来说,这种表当中,几乎不会去修改数据,只是对数据的查询效率有较高的要求。可以没有主键。


(1)非聚集索引


(2)保存数据的地址


(3)主键和辅助索引查询没有区别


常见的MyISAM与InnoDB类型



image.png



索引:



1.作用:


(1)提高查询速度


(2)确保数据的唯一性


(3)可以加速表和表之间的连接,实现表与表之间的参照完整性


(4)使用分组和排序子句进行数据检索时,可以显著减少分组和排序的时间


(5)全文检索字段进行搜索优化


2.分类:


(1)主键索引(PRIMARY KEY)


(2)唯一索引(UNIQUE)


(3)常规索引(INDEX)


(4)全文索引(FULLTEXT)


3.索引准则


(1)索引不是越多越好


(2)不要对经常变动的数据加索引


(3)小数据量的表建议不要加索引


(4)索引一般应加在查找条件的字段


4.索引失效:


(1)where语句中包含or时,可能会导致索引失效


(2)where语句中索引列使用了负向查询,可能会导致索引失效


(3)索引字段可以为null,使用is null或is not null时,可能会导致索引失效


(4)在索引列上使用内置函数,一定会导致索引失效


(5)对索引列进行运算,一定会导致索引失效


(6)like通配符可能会导致索引失效


(7)联合索引中,where中索引列违背最左匹配原则,一定会导致索引失效


(8)MySQL优化器的最终选择,不走索引


执行计划:



1.Id:


(1)相同由上而下


(2)不同由大到小


2.查询类型select_type:主要是用于区分普通查询、联合查询、子查询


3.type:访问类型,SQL 查询优化中一个很重要的指标,结果值从好到坏依次是:system > const > eq_ref > ref > range > index > ALL


4.possible_keys:查询过程中有可能用到的索引


5.key:实际使用的索引,如果为 NULL ,则没有使用索引。


6.rows:根据表统计信息或者索引选用情况,大致估算出找到所需的记录所需要读取的行数,越小越好。


7.filtered:表示返回结果的行数占需读取行数的百分比, filtered 的值越大越好。


优化策略:



1.字段类型优化:


(1)尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。这是因为引擎在处理查询和连 接时会逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了。


(2)最好不要给数据库留NULL,尽可能的使用 NOT NULL填充数据库.(备注、描述、评论之类的可以设置为 NULL)


2.where条件语句优化:


(1)WHERE子句中的连接顺序:数据库采用自左向右的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前(左), 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的前面(最左).


(2)避免在where语句中出现字段的类型转换(字段的类型和传入的参数类型不一致的时候发生的隐式类型转换),当两张表字符集不同的时候关联查询


(3)不要在where条件语句中的"="左边进行函数、算数运算或其他表达式运算,可以通过使用冗余字段来替代函数运算,否则系统无法正确使用索引


(4)where 子句中对字段进行 null 值判断、包含not、!=、<>等操作符,或like的关键词前加%(like ‘%关键词’),都无法使用索引,从而引发全表扫描.


(5)使用like进行模糊查询时应注意,除非必要,否则不要在关键词前加%,否则必然导致全表查询


3.索引优化


(1)索引并不是越多越好,索引固然可以提高相应的 select 的效率,但同时也降低了 insert 及 update 的效率,因为 insert 或 update 时有可能会重建索引,所以怎样建索引需要慎重考虑,视具体情况而定。


(2)用索引提高效率:合理使用索引和复合索引同样能提高效率.但使用索引是有代价的, 索引需要空间来存储,也需要定期维护, 每当有记录在表中增减或索引列被修改时, 索引本身也会被修改. 这意味着每条记录的INSERT , DELETE , UPDATE将为此多付出4 , 5 次的磁盘I/O . 因为索引需要额外的存储空间和处理,那些不必要的索引反而会使查询反应时间变慢.。定期的重构索引是有必要的。


(3)在使用索引字段作为条件时,如果该索引是联合索引,那么必须使用到该索引中的第一个字段作为条件时才能保证系统使用该索引,否则该索引将不会被使用。


(4)要注意索引的维护,周期性重建索引。


4.分页优化:分页查询的优化。页数比较多的情况下,如limit 10000,10 影响的结果集是10010行,查询速度会比较慢。推荐的解决方案是:先只查询主键select id from table where … order by … limit 10000,10(搜索条件和排序请建立索引),再通过主键去获取数据。


事务的ACID原则:



image.png


事务隔离级别:



  1. Read Uncommitted:未解决并发问题


 2.Read Committed:解决脏读问题


 3.Repeatable Read:解决不可重复读问题(innerDB默认)


 4.Serializable:解决所有问题


MySQL InnoDB 锁:



1.共享锁(Shared Locks):又称为读锁,简称 S 锁,顾名思义,共享锁就是多个事务对于同一数据可以共享一把锁,都能访问到数据,但是只能读不能修改。


select * from dept where deptno=10 lock in share mode


2.排他锁(Exclusive Locks):又称为写锁,简称 X 锁,排他锁不能与其他锁并存,如一个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的锁(共享锁、排他锁),只有该获取了排他锁的事务是可以对数据行进行读取和修改。(其他事务要读取数据可来自于快照)


select * from dept where deptno=10 for update
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
2天前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。
|
12天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
6天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
490 201
|
4天前
|
人工智能 移动开发 自然语言处理
2025最新HTML静态网页制作工具推荐:10款免费在线生成器小白也能5分钟上手
晓猛团队精选2025年10款真正免费、无需编程的在线HTML建站工具,涵盖AI生成、拖拽编辑、设计稿转代码等多种类型,均支持浏览器直接使用、快速出图与文件导出,特别适合零基础用户快速搭建个人网站、落地页或企业官网。
605 157
|
10天前
|
人工智能 自然语言处理 安全
国内主流Agent工具功能全维度对比:从技术内核到场景落地,一篇读懂所有选择
2024年全球AI Agent市场规模达52.9亿美元,预计2030年将增长至471亿美元,亚太地区增速领先。国内Agent工具呈现“百花齐放”格局,涵盖政务、金融、电商等多场景。本文深入解析实在智能实在Agent等主流产品,在技术架构、任务规划、多模态交互、工具集成等方面进行全维度对比,结合市场反馈与行业趋势,为企业及个人用户提供科学选型指南,助力高效落地AI智能体应用。
|
4天前
|
数据采集 消息中间件 人工智能
跨系统数据搬运的全方位解析,包括定义、痛点、技术、方法及智能体解决方案
跨系统数据搬运打通企业数据孤岛,实现CRM、ERP等系统高效互通。伴随数字化转型,全球市场规模超150亿美元,中国年增速达30%。本文详解其定义、痛点、技术原理、主流方法及智能体新范式,结合实在Agent等案例,揭示从数据割裂到智能流通的实践路径,助力企业降本增效,释放数据价值。
|
存储 人工智能 监控
从代码生成到自主决策:打造一个Coding驱动的“自我编程”Agent
本文介绍了一种基于LLM的“自我编程”Agent系统,通过代码驱动实现复杂逻辑。该Agent以Python为执行引擎,结合Py4j实现Java与Python交互,支持多工具调用、记忆分层与上下文工程,具备感知、认知、表达、自我评估等能力模块,目标是打造可进化的“1.5线”智能助手。
611 46