MySQL中优化的方法
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章主要介绍MySQL中优化的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!优化方向SQL优化sql优化分析索引优化优化数据库对象优化表的数据类型表拆分(水平、垂直)反
千家信息网最后更新 2025年01月23日MySQL中优化的方法
这篇文章主要介绍MySQL中优化的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
优化方向
SQL优化
sql优化分析
索引优化
优化数据库对象
优化表的数据类型
表拆分(水平、垂直)
反范式
使用中间表
优化 mysql server
mysql内存管理优化
log机制及优化
调整mysql并发参数
应用优化
数据库连接池
使用缓存减少压力
负载均衡建立集群
主主同步、主从复制
Mysql优化问题分析定位
分析SQL执行频率
show status例如:分析读为主,还是写为主
定位执行效率低的SQl
慢查询日志定位-log-slow-queries = xxx(指定文件名)SHOW PROCESSLIST查看当前正在进行的线程,包括线程状态、是否锁表
分析SQL执行计划
explain "your sql"desc "your sql"- 部分参数分析select_type: SIMPLE 简单表,不使用表连接或子查询PRIMARY 主查询,即外层的查询UNION SUBQUER 子查询的第一个selecttype: ALL 全表扫描index 索引全扫描range 索引范围扫描ref 使用非唯一索引或唯一索引的前缀扫描eq_ref 类似ref,使用的索引是唯一索引const/system 单表中最多有一个匹配行NULL 不用访问表或者索引,直接得到结果
show profile分析SQL
select @@have_profiling 是否支持select @@profiling 是否开启执行 "your sql"show profiles show profile block io for QUERY 17
索引优化
索引的存储分类
B-TREE索引:常见,大部分都支持HASH索引:只有memory引擎支持R-TREE索引:空间索引是MyISAM的一个特殊索引类型,主要用于地理空间数据类型full-text索引:全文索引,MyISAM的一个特殊索引类型,innodb从5.6开始支持
索引的创建与删除
添加索引ALTER Table `table_name` ADD PRIMARY KEY(`column`)ALTER Table `table_name` ADD UNIQUE(`column`)ALTER Table `table_name` ADD INDEX(`column`)ALTER Table `table_name` ADD FULLTEXT(`column`)删除ALTER Table `table_name` drop index index_name
Mysql中能使用索引的情况
匹配全值匹配值范围查询匹配最左前缀仅仅对索引进行查询(覆盖查询)匹配列前缀 (添加前缀索引)部分精确+部分范围
不能使用索引的场景
以%开关的like查询数据类型出现隐式转换复合索引查询条件不包含最左部分使用索引仍比全表扫描慢用or分割开的条件
mysql语句优化
定期优化表
optimize table table_name 合并表空间碎片,对MyISAM、BDB、INNODB有效如果提示不支持,可以用 mysql --skip-new 或者 mysql --safe-mode 来重启,以便让其他引擎支持
常用优化
尽量避免全表扫描,对where及orderby的列建立索引尽量避免where使用 != 或 <>尽量避免where子句用 or 连接条件乱用%导致全表扫描尽量避免where子句对字段进行表达式操作尽量避免where子句对字段进行函数操作覆盖查询,返回需要的字段优化嵌套查询,关联查询优于子查询组合索引或复合索引,最左索引原则用exist代替in当索引列有大量重复数据时,SQL查询可能不会去利用索引
优化数据库对象
优化表数据类型
PROCEDURE ANALYSE (16,256) 排除多于16个,大于256字节的ENUM建议"your sql" PROCEDURE ANALYSE ()
表拆分
垂直拆分针对某些列常用、不常用水平拆分表很大表中的数据有独立性,能简单分类需要在表存放多种介质
反范式
增加冗余列、增加派生列、重新组表和分割表
使用中间表
数据查询量大数据统计、分析场景
Mysql引擎比较
mysql有什么引擎?
关于表引擎的命令
show engines; 查看myql所支持的存储引擎show variables like '%storage_engine'; 查看mysql默认的存储引擎show create table table_name 查看具体表使用的存储引擎
关于innodb
1. 提供事务、回滚、系统奔溃修复能力、多版本并发控制事务2. 支持自增列3. 支持外键4. 支持事务以及事务相关联功能5. 支持mvcc的行级锁
关于MyISAM
1. 不支持事务、不支持行级锁,只支持并发插入的表锁,主要用于高负载的select2. 支持三种不同的存储结构:静态、动态、压缩
调整参数优化mysql后台服务
MyISAM内存优化
#修改相应服务器位置的配置文件 my.cnfkey_buffer_size决定myisam索引块缓存区的大小,直接影响表的存取效率,建议1/4可用内存read_buffer 读缓存write_buffer 写缓存
InnoDB内存优化
innodb_buffer_pool_size 存储引擎表数据和索引数据的最大缓存区大小innodb_old_blocks_pct LRU算法 决定old sublist的比例innodb_old_blocks_time LRU算法 数据转移间隔时间
mysql并发参数
max_connections 最大连接数,默认151back_log 短时间内处理大量连接,可适当增大table_open_cache 控制所有SQL执行线程可打开表缓存的数量,受其他参数制约thread_cache_size 控制缓存客户服务线程数量,加快数据库连接速度,根据threads_created/connections来衡量是否合适innodb_lock_wait_timeout 控制事务等待行锁时间,默认50ms
Mysql应用优化介绍
为什么要做应用优化
数据的重要性
mysql服务及自身性能瓶颈
保证大型系统稳定可靠运行
应用优化方法
使用连接池
减少对mysql的真实连接
a. 避免相同数据重复执行(查询缓存)
b. 使用mysql缓存(sql缓存)负载均衡
a. LVS 分布式
b. 读写分离(主主复制、主从复制保证数据一致性)
以上是"MySQL中优化的方法"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
索引
数据
查询
支持
引擎
缓存
分析
事务
类型
存储
参数
内存
前缀
数据库
线程
部分
应用
控制
服务
方法
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
外派软件开发人员排名
windows云服务器搭建云盘
网络安全法哪一年生效
电信与网络安全
怎么开网络技术公司电话
世界服务器怎么换材质包
数据库技术与应用实践报告
质量网络技术开发优缺点
雅安软件开发公司推荐
小程序云服务器的使用
vs sql软件开发教程
某软件开发项目进度汇报
天地劫手游多少服务器
湖南澧县服务器虚拟主机
江苏数据软件开发价格
我国数据库技术发展现状
网络安全法 篡改链接
飚客网络技术
三级计算机网络技术激活码
计算机网络技术和数字媒体艺术
数据库程序员入门书籍
4g网络与云服务器连接视频
mc国际服服务器推荐1.16
常州四药软件开发工程师
如何删除表格数据库中的日期
网络安全管理局怎么样
网络安全在心中征文700字
为数据库制定安全策略简要
相亲直播软件开发app
数据库应用优化分析