MySQL学习Day25——数据库其他调优策略

一、数据库调优的措施:

1.调优的目标:

(1)尽可能节省系统资源,以便系统可以提供更大负荷的服务

(2)合理的结构设计和参数调整,以提高用户操作的响应速度

(3)减少系统的瓶颈,提高MySQL数据库整体的性能;

2.如何定位调优:用户的反馈、日志分析、服务器资源使用监控、数据库内部状况监控

3.调优的维度和步骤:

(1)选择合适的DBMS:DBMS的选择关系到了后面的整个设计过程,所以第一步就是要选择适合的DBMS

(2)优化表设计:表的结构要尽量遵循三范式原则,如果查询的次数比较多可以采用反范式化进行优化,表字段的数据类型应该合理。

(3)优化逻辑查询:子查询优化、等价谓词重写、视图重写、条件优化、连接消除和嵌套连接消除等

(4)优化物理查询:合理使用表的索引

(5)使用Redis或者Memcached作为缓存

(6)库级优化:

a.读写分离:

b.数据分片:

二、优化MySQL服务器:

1.优化服务器硬件:服务器的硬件性能直接决定着MySQL数据库的性能,硬件的性能瓶颈直接决定MySQL数据库的运行速度和效率,针对性能瓶颈提高硬件配置,可以提高数据库的查询和更新速度。

(1)配置较大的内存:足够大的内存是提高MySQL数据库的性能方法之一,内存的速度比磁盘IO快很多,可以通过增加系统的缓冲区容量使得数据在内存中停留的时间更长,以减少磁盘的IO。

(2)配置高速磁盘系统

(3)合理分布磁盘IO:把磁盘IO分散在多个设备上,以减少资源竞争,提高并行操作能力

(4)配置多处理器:MySQL是多线程的数据库,多处理器可以同时执行多个线程。

2.优化MySQL的参数:通过优化MySQL的参数可以提高资源利用率,从而达到提高服务器性能的目的。主要的参数都在my.cnf或者my.ini文件的[mysqld]组中,配置完毕参数后需要重新启动MySQL服务才能生效。

(1)innodb_buffer_pool_size:表示InnoDB类型的表和索引的最大缓存。它不仅仅缓存索引数据,还会缓存表的数据。这个值越大,查询的速度就会越快。但是这个值太大会影响操作系统的性能。

(2)key_buffer_size:表示索引缓冲区的大小,索引缓冲区是所有的线程共亭。增加索引缓冲区可以得到更好处理的索引(对所有读和多重写)。key_buffer_size的大小取决于内存的大小。如果key_buffer_size太大,就会导致操作系统繁换页,也会降低系统性能。

(3)table_cache:表示同时打开表的个数,table_cache值越大,能够同时打开的表的个数越多。物理内存越大,但是该值越大会影响操作系统的性能。

(4)query_cache_size:表示查询缓冲区的大小。如果Qcache_lowmem_prunes的值非常大,则表明经常出现缓冲不够的情况,就要增加Query_cache_size的值;如果Qcache_hits的值非常大,则表明查询缓冲使用非常频繁,如果该值较小反而会影响效率,那么可以考虑不用查询缓存;MySQL8.0之后失效。该参数需要和query_cache_type配合使用。

(5)query_cache_type:当query_cache_type的值是0时,所有的查询都不使用查询缓存区。当该参数的值为1时,所有的查询都将使用查询缓存区,当该参数的值为2时,只有在查询语句中使用SQL_CACHE关键字查询才使用查询缓存区。使用查询缓存区可以提高查询的速度,这种方式只适用于修改操作少且经常执行相同的查询操作的情况。

(6)sort_buffer_size:表示每个需要进行排序的线程分配的缓冲区的大小。增加这个参数的值可以提高ORDER BY或GROUP BY操作的速度。

(7)join_buffer_size:表示联合査询操作所能使用的缓冲区大小,和sort_buffer_size一样该参数对应的分配内存也是每个连接独享。

(8)read_buffer_size:表示每个线程连续扫描时为扫描的每个表分配的缓冲区的大小(字节)。当线程从表中连续读取记录时需要用到这个缓冲区。

(9)innodb_flush_log_at_trx_commit:表示何时将缓冲区的数据写入日志文件,并且将日志文件写入磁盘中。该参数对于InnoDB引擎非常重要。该参数有3个值,分别为0、1和2,默认值为1。

a.innodb_flush_log_at_trx_commit的值为0:表示每秒1次的频率将数据写入日志文件并将日志文件写入磁盘。每个事务的commit并不会触发前面的任何操作。该模式速度最快,但不太安全,mysqld进程的崩溃会导致上一秒钟所有事务数据的丢失。

b.innodb_flush_log_at_trx_commit值为1:表示每次提交事务时将数据写入日志文件并将日志文件写入磁盘进行同步。该模式是最安全的,但也是最慢的一种方式。因为每次事务提交或事务外的指令都需要把日志写入(flush)硬盘。

c.innodb_flush_log_at_trx_commit值为2:表示每次提交事务时将数据写入日志文件,每隔1秒将日志文件写入磁盘。该模式速度较快。也比0安全,只有在操作系统崩溃或者系统断电的情况下,上一秒钟所有事务数据才可能丢失。

(10)innodb_log_buffer_size:是InnoDB存储引擎的事务日志所使用的缓冲区的大小。为了提高性能也是先将信息写入Innodb Log Buffer中,当满足innodb_flush_log_tnx_commit参数所设置的相应条件(或者日志缓冲区写满)之后,才会将日志写到文件(或者同步到磁盘)中。

(12)max_connections:表示允许连接到MySQL数据库的最大数量,默认值是151,连接数 不是越大越好,因为这些连接会浪费内存的资源。过多的连接可能会导致MySQL服务器僵死。

(13)back_log:用于控制MySQL监听TCP牆口时设置的积压请求栈大小,如果MySql的连接数达到max_connections时,新来的请求将会被存在堆栈中,以等待某一连接释放资源,该堆栈的数量即back_log,如果等待连接的数量超过back_log将不被授予连接资源。

(14)thread_cache_size:线程池缓存线程数量的大小,当客户端断开连接后将当前线程缓存起来,当在接到新的连接请求时快速响应无需创建新的线程。

(15)wait_timeout:指定一个请求的最大连接时间

(16)interactive_timeout:表示服务器在关闭连接前等待行动的秒数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/719899.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JavaWeb】Jwt令牌简单使用及代码示例

Jwt令牌介绍 Jwt令牌主要用于登录操作中,常用来进行身份认证 jwt令牌分为三个部分(不同部分之间用点分割): 由base64编码的头部信息,其中储存着Jwt所使用的摘要算法由base64编码的中间部分用户自定义信息&#xff0c…

stm32f103zet6笔记1-led工程

1、选择串口调试 2、LED0连接到PB5,PB5设置为推挽输出。PE5同理。 3、生成成对的.c,.h文件。 4、debugger选择j-link。 5、connection选择SWD。 6、编写bsp_led.c,bsp_led.h文件。 7、下载调试,可以看到LED0 500ms闪烁一次,LED1 1000ms闪烁一…

浅谈一个CTF中xss小案例

一、案例代码 二、解释 X-XSS-Protection: 0:关闭XSS防护 之后get传参,替换过滤为空,通过过滤保护输出到img src里面 三、正常去做无法通过 因为这道题出的不严谨所以反引号也是可以绕过的 正常考察我们的点不在这里,正常考察…

Java编程之方法的重写1

继承并不只是扩展父类的功能,还可以重写父类的成员方法。重写(还可以称为覆盖)就是在子类中将父类的成员方法名称保留,重新编写父类成员方法的实现内容,更改成员方法的存储权限,或是修改成员方法的返回值类…

Unity之街机捕鱼

目录 😪炮台系统 🎶炮口方向跟随鼠标 🎶切换炮台 😪战斗系统 🎮概述 🎮单例模式 🎮开炮 🎮子弹脚本 🎮渔网脚本 🎮鱼属性信息的脚本 &#x1f6…

华为OD机试真题-求幸存数之和【题解分享】

原题内容 给一个正整数列nums,一个跳数jump,及幸存数量left。运算过程为:从索引为0的位置开始向后跳,中间跳过 J 个数字,命中索引为 J1 的数字,该数被敲出,并从该点起跳,以此类推,直…

叠罗汉游戏

题目描述 农场的N头奶牛喜欢玩叠罗汉游戏,就是几头奶牛1头奶牛接着1头奶牛的站成一柱子形状。不过奶牛的力量不一样,用数值Ci表示第i头奶牛它的上面最多可以站多少头奶牛,问这些奶牛最少可以站成几个柱子形状。 输入格式 输入文件名&#…

怎样获得CNVD原创漏洞证书

1. 前言 因为工作变动,我最近把这一年多的工作挖漏洞的一些工作成果提交到了CNVD漏洞平台(https://www.cnvd.org.cn/),获得了多张CNVD原创漏洞证书。本篇博客讲下怎么获得CNVD原创漏洞证书,以供大家参考。 2. CNVD原创…

Canvas笔记03:Canvas元素功能、属性、获取、原理等一文讲透

hello,我是贝格前端工场,最近在学习canvas,分享一些canvas的一些知识点笔记,本期分享canvas元素的知识,欢迎老铁们一同学习,欢迎关注,如有前端项目可以私信贝格。 Canvas元素是HTML5中的一个重…

基于Intel x86的轨道交通/印度地铁自动售检票(AFC)系统

印度孟买地铁3号线 目前,印度孟买3号线正在全面建设中,这条全长33.5公里的线路将是孟买第一条地下地铁线路,设有27个地下车站和1个地面车站,此条线路的成功通车将连接其他地铁线路、单轨铁路、郊区铁路、城际铁路和孟买机场等&am…

解决prettier 报错 Delete `␍`

根目录(么有的话)新建 .prettierrc.js配置文件 module.exports {tabWidth: 2,semi: true,printWith: 80,singleQuote: true,quoteProps: consistent,htmlWhitespaceSensitivity: strict,vueIndentScriptAndStyle: true,// 主要是最后一行endOfLine:aut…

Ubuntu环境使用docker构建并运行SpringBoot镜像

今天Ubuntu环境使用docker构建并运行SpringBoot镜像,看文章之前建议先查看安装流程: Linux环境之Ubuntu安装Docker流程 一、镜像打包过程及执行 1、创建一个测试目录 mkdir javaDemo 2、springBoot的包复制到此目录下 cp demo1-0.0.1-SNAPSHOT.jar /data/app/…

计算机网络实验 基于ENSP的协议分析

实验二 基于eNSP的协议分析 一、实验目的: 1)熟悉VRP的基本操作命令 2)掌握ARP协议的基本工作原理 3)掌握IP协议的基本工作原理 4)掌握ICMP协议的基本工作原理 二、实验内容: 1、场景1:两台PC机…

React-子传父

1.概念 说明&#xff1a;React中子组件向父组件传递数据通常涉及回调函数和状态提升等方法。 2.代码实现 2.1绑定事件 说明&#xff1a;父组件绑定自定义事件 <Son onGetSonMsg{getMsg}></Son> 2.2接受事件 说明&#xff1a;子组件接受父组件的自定义事件名称…

前端食堂技术周刊第 114 期:Interop 2024、TS 5.4 RC、2 月登陆浏览器的新功能、JSR、AI SDK 3.0

美味值&#xff1a;&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f; 口味&#xff1a;凉拌鸡架 食堂技术周刊仓库地址&#xff1a;https://github.com/Geekhyt/weekly 大家好&#xff0c;我是童欧巴。欢迎来到前端食堂技术周刊&#xff0c;我们先来看下…

机器学习模型总结

多元线性回归&#xff08;linear regression&#xff09; 自变量&#xff1a;连续型数据&#xff0c;因变量&#xff1a;连续型数据 选自&#xff1a;周志华老师《机器学习》P53-55 思想&#xff1a;残差平方和达到最小时的关系式子即为所求&#xff0c;残差平方和&#xff1a…

【学习心得】爬虫JS逆向通解思路

我希望能总结一个涵盖大部分爬虫逆向问题的固定思路&#xff0c;在这个思路框架下可以很高效的进行逆向爬虫开发。目前我仍在总结中&#xff0c;下面的通解思路尚不完善&#xff0c;还望各位读者见谅。 一、第一步&#xff1a;明确反爬手段 反爬手段可以分为几个大类 &#…

【ARM 嵌入式 编译系列 10.5 -- .linkonce 段详细介绍】

请阅读【嵌入式开发学习必备专栏 之 ARM GCC 编译专栏】 文章目录 .linkonce 段详细介绍GOT 全局偏移表 .linkonce 段详细介绍 .gnu.linkonce.t是一个链接器区段&#xff0c;用于存放那些只需要链接一次的函数或者符号。区段名称后面通常跟着函数或者符号的名字。 关于linko…

20240304-2-计算机网络

计算机网络 知识体系 Questions 1.计算机网络分层的优点和缺点 优点 各层之间是独立的&#xff1b;灵活性好&#xff1b;结构上可分割开&#xff1b;易于实现和维护&#xff1b;能促进标准化工作。 缺点&#xff1a; 降低效率&#xff1b;有些功能会在不同的层次中重复出现&…

leetcode 300.最长递增子序列

动态规划的经典问题之一。 思路&#xff1a;这里的dp数组定义与之前做的那个打家劫舍得模板不一样&#xff0c;上一个计算的是偷多少家获得的最大钱财&#xff0c;是对于房子个数的定义。这里并不是&#xff0c;这里是对于一个数结尾作为dp数组的定义。 解释一下&#xff0c;…