当前位置: 首页 > news >正文

总结MySQL、Redis的优化措施与使用 mysql_upgrade升级数据结构

目录

一.MySQL数据库优化

二.Redis优化

三.MySQL创建测试账号报错


一.MySQL数据库优化

  1. 遵循MySQL层优化的五个原则: 减少数据访问,返回更少的数据,减少交互次数减少服务器CPU开销,利用更多资源。
  2. 理解SQL优化原理并进行SQL优化,例如避免不走索引的场景,最大化利用索引,尽可能避免全表扫描,减少无效数据的查询等。
  3. 事务日志性能优化:双一设置innodb_flush_log_at_trx_commitsync_binlog两个参数设置,都设置为1就是双1设置。MySQL 默认配置就是双1配置。
  4. 优化MySQL所在服务器内核
  5. 优化数据库参数以提高资源利用率,从而提高MySQL服务器性能。此优化需要进行压力测试来进行参数调整,MySQL服务的配置参数都在my.cnf或myini中,其中一些性能影响较大的参数包括query_cache_size和query_cache_type等

MySQL参数优化

MySQL 默认的最大连接数为 100,可以在 mysql 客户端使用以下命令查看
mysql> show variables like 'max_connections';
查看当前访问Mysql的线程
mysql> show processlist;
设置最大连接数
mysql>set globle max_connections = 5000;
最大可设置16384,超过没用
查看当前被使用的connections
mysql>show globle status like 'max_user_connections'

对MySQL语句性能优化的16条经验

  • 为查询缓存优化查询
  • EXPLAIN 我们的SELECT查询(可以查看执行的行数)
  • 当只要一行数据时使用LIMIT 1
  • 为搜索字段建立索引
  • 在Join表的时候使用相当类型的列,并将其索引
  • 千万不要 ORDER BY RAND ()
  • 避免SELECT *
  • 永远为每张表设置一个ID
  • 可以使用ENUM 而不要VARCHAR
  • 尽可能的使用NOT NULL
  • 固定长度的表会更快
  • 垂直分割
  • 拆分打的DELETE或INSERT语句
  • 越小的列会越快
  • 选择正确的存储引擎
  • 小心 "永久链接"

二.Redis优化

1.避免使用命令keys *这个命令是阻塞的,即操作执行期间,其它任何命令在你的实例中都无法执行。当redis中key数据量小时到无所谓,数据量大就很糟糕了。所以我们应该避免去使用这个命令。可以去使用SCAN,来代替。

2.数据压缩后再存入redisredis为每种数据类型都提供了两种内部编码方式,在不同的情况下redis会自动调整合适的编码方式。

3.设置key的有效期我们应该尽可能的利用key有效期。比如一些临时数据(短信校验码),过了有效期Redis就会自动为你清除 

4.选择回收策略(maxmemory-policy)当Redis的实例空间被填满了之后,将会尝试回收一部分key。根据你的使用方式,强烈建议使用 volatile-lru(默认) 策略——前提是你对key已经设置了超时。但如果你运行的是一些类似于 cache 的东西,并且没有对 key 设置超时机制,可以考虑使用 allkeys-lru 回收机制,具体讲解查看 。maxmemory-samples 3 是说每次进行淘汰的时候 会随机抽取3个key 从里面淘汰最不经常使用的(默认选项)。

1

2

3

4

5

6

7

maxmemory-policy 六种方式 :

volatile-lru:只对设置了过期时间的key进行LRU(默认值)

allkeys-lru : 是从所有key里 删除 不经常使用的key

volatile-random:随机删除即将过期key

allkeys-random:随机删除

volatile-ttl : 删除即将过期的

noeviction : 永不过期,返回错误

5.使用bit位级别操作和byte字节级别操作来减少不必要的内存使用

1

2

bit位级别操作:GETRANGE, SETRANGE, GETBIT and SETBIT

byte字节级别操作:GETRANGE and SETRANGE

6.当业务场景不需要数据持久化时,关闭所有的持久化方式可以获得最佳的性能数据持久化时需要在持久化和延迟/性能之间做相应的权衡

7.想要一次添加多条数据的时候可以使用管道

8.限制redis的内存大小(64位系统不限制内存,32位系统默认最多使用3GB内存) 

 数据量不可预估,并且内存也有限的话,尽量限制下redis使用的内存大小,这样可以避免redis使用swap分区或者出现OOM错误。(使用swap分区,性能较低,如果限制了内存,当到达指定内存之后就不能添加数据了,否则会报OOM错误。可以设置maxmemory-policy,内存不足时删除数据)

9.尽可能使用哈希存储

10.使用lazy free特性: lazy free是Redis 4.0新增的一个功能,它可以理解为惰性删除或延迟删除。意思是在删除时提供异步延时释放键值的功能,把键值释放操作放在BIO(BackgroundI/0)单独的子线程处理中,以减少删除对Redis主线程的阻塞。

三.MySQL创建测试账号报错

报错信息:

因为数据库版本不一致,在还原过后,忘记升级数据库(还原后没有使用 mysql_upgrade升级数据结构)。其实从错误信息也能看出需要执行 mysql_upgrade命令,检查所有数据库中的所有表与当前版本的 MySQL服务器是否不兼容。 mysql_upgrade还会升级系统表,以便你可以使用一些新特性或功能。

解决方法:

mysql_upgrade -u root -p

随后登入数据库正常创建用户即可

相关文章:

总结MySQL、Redis的优化措施与使用 mysql_upgrade升级数据结构

目录 一.MySQL数据库优化 二.Redis优化 三.MySQL创建测试账号报错 一.MySQL数据库优化 遵循MySQL层优化的五个原则: 减少数据访问,返回更少的数据,减少交互次数减少服务器CPU开销,利用更多资源。理解SQL优化原理并进行SQL优化&#xff0c…...

C++11线程库

C11线程库 本质是对不同平台的线程库进行封装。因为windows和linux下各有自己的接口,这使得代码的可移植性比较差。C11中最重要的特性就是对线程进行支持了,使得C在并行编程时不需要依赖第三方库,而且在原子操作中还引入了原子类的概念。要使…...

智能化生产,提高效率!使用关键词采集工具助力企业数字化转型

关键词采集工具在企业数字化转型中的优势和作用进行阐述。 随着信息技术的不断发展,企业数字化转型已经成为了企业发展的必然趋势。 对于各种规模的企业而言,数字化转型可以提升企业的生产效率、降低成本、提高产品质量等方面带来更多的发展机遇。 而关…...

浅谈自动化测试用例创建和文档

通过自动创建测试用例和文档,探索自然语言处理 (NLP) 在革新软件测试方面的变革力量。 技术的快速发展导致对高效和有效的软件测试方法的需求增加。该领域最有前途的进步之一是自然语言处理 (NLP) 技术的集成。NLP 是人工智能(AI)的一个子集,专注于通过…...

[Java Web]AJAX Axios | 一种结合HTML来取代传统JSP的技术

⭐作者介绍:大二本科网络工程专业在读,持续学习Java,努力输出优质文章 ⭐作者主页:逐梦苍穹 ⭐所属专栏:Java Web 目录1、AJAX1.1、简介1.2、作用1.3、同步和异步1.4、代码实现1.4.1、服务端1.4.2、客户端1.4.2.1、完善…...

【C++】多态问答题

前言 本篇仅整理一些比较偏的多态的问答题 文章目录前言一. 内联与虚函数二. 静态函数与虚函数三. 构造函数与虚函数四. 虚函数与普通函数结束语一. 内联与虚函数 内联函数可以是虚函数吗? 首先我们看一下语法有没有问题 我们看到,程序成功运行了&#…...

【设计模式】适配器模式

一,定义适配器模式:结构型模式之一,适配器提供客户类需要的接口,适配器的实现就是把客户类的请求转化为对适配者的相应接口的调用。也就是说:当客户类调用适配器的方法时,在适配器类的内部将调用适配者类的方法&#x…...

跨域之CorsFilter

跨域之CorsFilter CorsFilter 是 Spring 框架提供的一个用于处理跨域请求的过滤器。在开发中,我们常常需要处理前端发来的跨域请求,CorsFilter 就可以帮助我们实现这一功能。 CorsFilter 主要用于设置跨域请求的响应头,以允许跨域请求能够被…...

STM32基于HAL工程读取DS1302时间数据

STM32基于HAL工程读取DS1302时间数据✨申明:本文章仅发表在CSDN网站,任何其他网站,未注明来源,见此内容均为盗链和爬取,请多多尊重和支持原创!🍁对于文中所提供的相关资源链接将作不定期更换。&#x1f4cc…...

《Effective Objective-C 2.0 》 阅读笔记 item10

第10条:在既有类中使用关联对象存放自定义数据 1. 关联对象 可以给某对象关联许多其他对象,这些对象通过“键”来区分,这就是关联对象。存储对象值的时候,可以指明“存储策略”(storage policy)&#xff…...

gpt3官网中文版-人工智能软件chat gpt安装

GPT-3(Generative Pre-trained Transformer 3)是一种自然语言处理模型,由OpenAI研发而成。它是GPT系列模型的第三代,也是目前最大、最强大的自然语言处理模型之一,集成了1750亿个参数,具有广泛的使用场景&a…...

工作常用、面试必问:Hive 窗口函数汇总

在SQL中有一类函数叫做聚合函数,例如sum()、avg()、max()等等,这类函数可以将多行数据按照规则聚集为一行,一般来讲聚集后的行数是要少于聚集前的行数的。但是有时我们想要既显示聚集前的数据,又要显示聚集后的数据,这…...

spring5(五):AOP操作

spring5(五):AOP操作前言一、代理模式1、场景模拟2、代理模式2.1 概念2.2 静态代理2.3 动态代理二、AOP概述1、什么是 AOP?2、相关术语3、作用三、AOP底层原理1、AOP 底层使用动态代理2、AOP(JDK 动态代理)2.1 编写 J…...

functional.partial

functional.partial__slots____new__中的cls, /是什么意思?functools.partial这个partial类有什么作用类中没有__init__函数Python 内置的 functools.partial 类的实现。这个类可以用来创建一个新的函数对象,该对象是对一个原有函数的参数进行了部分应用…...

C#缩放PDF文件

项目上有个功能需求:将原PDF进行缩放至原先的90%大小。 使用的是spire.pdf插件,但是官方文档上的缩放只是改变显示,最终文件其实没有缩放成功。遂找到了另外的方式进行重绘。 上代码: using Spire.Pdf; using Spire.Pdf.Graphi…...

【Java面试八股文宝典之MySQL篇】备战2023 查缺补漏 你越早准备 越早成功!!!——Day20

大家好,我是陶然同学,软件工程大三即将实习。认识我的朋友们知道,我是科班出身,学的还行,但是对面试掌握不够,所以我将用这100多天更新Java面试题🙃🙃。 不敢苟同,相信大…...

Nsight System的安装和使用

本地安装 官方网站,需要登录 选择Windows Host下载安装 服务器安装 选择Linux CLI .deb下载,上传到服务器之后,执行以下命令,默认会安装在/opt/nvidia/nsight-systems-cli/2023.2.1/target-linux-x64/,nsys在/usr/lo…...

Spring销毁的几种实现

有这3种方法,但是程序执行完成并没有打印出来。一定要手动close.手动执行后会调用如下逻辑:org.springframework.context.support.AbstractApplicationContext#doCloseorg.springframework.context.support.AbstractApplicationContext#destroyBeansorg.…...

【 Spring 核⼼与设计思想 】

文章目录一、Spring 是什么1.1 什么是容器1.2 什么是 IoC二、开发案例对比2.1 传统程序开发2.2 控制反转式程序开发2.3 对⽐总结规律三、理解 Spring IoC四、DI 概念说明五、总结一、Spring 是什么 我们通常所说的 Spring 指的是 Spring Framework(Spring 框架&…...

Arrays.sort()——逆序

package utils;import java.util.*;class ComparatorInteger implements Comparator<Integer> {Override //使得逆序 o1比o2小&#xff0c;返回正数——需要调换位置public int compare(Integer o1, Integer o2) {return o1 < o2 ? 1 : -1;} }class Comparato…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT&#xff0c;橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版&#xff1a;职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...