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

news/2024/5/20 22:12:28/文章来源:https://blog.csdn.net/ZHUZIH6/article/details/129954337

目录

一.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

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

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

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

相关文章

力扣:字符串中的第一个唯一字符(C++实现)

题目部分: 解题思路: 方案一: 首先认真审题的小伙伴们一定会发现就是题目给了提示只包含小写字母,也就是说我们的排查范围是小写的26个字母。为了怕有的友友们一时短路想不起来,我就其按照顺序列出来吧。 即&#x…

[架构之路-157]-《软考-系统分析师》- 9-信息系统规划-2-少量人力进行项目初步调研(系统分析师的首要任务)与可行性研究报告

目录 9 . 3 初步调查 1. 初步调查的目标 9.4可行性研究 9.4.1可行性评价准则 1 . 经济可行性(钱的可行性) 2 . 技术可行性(能力可行性) 3 . 法律可行性(社会) 4 . 用户使用可行性(用户&…

洛谷P2822:组合数问题 ←(帕斯卡法则+取模+前缀和)

【题目来源】https://www.luogu.com.cn/problem/P2822【题目描述】 组合数​表示的是从n个物品中选出m个物品的方案数。举个例子:从(1,2,3)三个物品中选择两个物品可以有(1,2),(1,3),(2,3) 这三种选择方法。根据组合数的定义,我们…

属性配置的宏(修改宏IntDir)

项目属性页码 拷贝下 常见宏列表 下表描述了可用宏的常用子集;还有很多没有在这里列出。 转到“宏”对话框,查看项目中的所有属性及其当前值。 有关如何创建 MSBuild 属性定义以及如何在 .props、.targets 和 .vcxproj 文件中将其用作宏的详细信息&am…

面向对象编程(进阶)7:面向对象特征三:多态性

一千个读者眼中有一千个哈姆雷特。 目录 7.1 多态的形式和体现 7.1.1 对象的多态性 举例: 7.1.2 多态的理解 7.1.3 举例 1、方法内局部变量的赋值体现多态 2、方法的形参声明体现多态 3、方法返回值类型体现多态 7.2 为什么需要多态性(polymorphism)&#x…

登录认证功能的实现

1.登录校验分析 什么是登录校验? 所谓登录校验,指的是我们在服务器端接收到浏览器发送过来的请求之后,首先我们要对请求进行校验。先要校验一下用户登录了没有,如果用户已经登录了,就直接执行对应的业务操作就可以了…

C语言头文件路径相关问题总结说明

聊聊系统路径位置&#xff0c;绝对路径与相对路径&#xff0c;正斜杠 / 与 反斜杠 \ 使用说明 ...... by 矜辰所致目录前言一、C语言中的头文件引用二、KEIL 中的头文件路径2.1 IncudePaths 指定的路径绝对路径和相对路径正斜杠 / 与 反斜杠 \ 与双斜杠2.2 include < >…

VN5620以太网测试——环境搭建篇

文章目录 前言一、新建以太网工程二、Port Configuration三、Link up四 Trace界面五、添加Ethernet Packet Builder六、添加ARP Packet七、添加Ethernet IG总结前言 CANoe(CAN open environment)VN5620 :是一个紧凑而强大的接口,用于以太网网络的分析、仿真、测试和验证。 …

页面预加载优化实践

概述在客户端开发中&#xff0c;列表类型页面大多都依赖网络请求&#xff0c;需要等网络数据请求下来后再刷新页面。但遇到网络请求慢的场景&#xff0c;就会导致页面加载很慢甚至加载失败。我负责会员的商品列表页面&#xff0c;在业务场景中&#xff0c;页面元素比较复杂&…

初学对象存储OSS---学习笔记

文章目录前言一、OSS是什么&#xff1f;下面以一个小故事介绍OSS的作用&#xff1a;二、怎么使用OSS1.进入 -----> [阿里云官网](https://www.aliyun.com/)2.点击进入OSS控制台3.获取accessKeyId 和 accessKeySecret4.拿到了accessKeyId 和 accessKeySecret &#xff0c;就可…

[Netty] Netty与Os的零拷贝 (五)

1.Netty的零拷贝原理 Netty接收和发送ByteBuffer采用DirectBuffer&#xff0c;使用堆外直接内存进行Socket读写&#xff0c;不需要进行字节缓冲区的二次拷贝。如果使用传统的JVM的堆内存&#xff08;Heap Buffer&#xff09;进行socker读写&#xff0c;那么JVM将会将堆内存拷贝…

javaScript---理解异步

目录 同步与异步 进程和线程 JS单线程 定时器 同步与异步 同步&#xff1a;调用之后得到结果再干别的任务。 异步&#xff1a;调用之后先不管结果&#xff0c;继续干别的任务。 进程和线程 进程&#xff08;process&#xff09;程序运行的实例&#xff0c;同一个程序可以产生多…

RestClient操作文档

RestClient操作文档5.RestClient操作文档5.1.新增文档5.1.1.索引库实体类5.1.2.语法说明5.1.3.完整代码5.2.查询文档5.2.1.语法说明5.2.2.完整代码5.3.删除文档5.4.修改文档5.4.1.语法说明5.4.2.完整代码5.5.批量导入文档5.5.1.语法说明5.5.2.完整代码5.6.小结5.RestClient操作…

多测合一生产软件SISS教程大全

下载&#xff1a; 在这里插入代码片产品介绍&#xff1a; 不动产权籍调查测绘软件RESS是南方数码针对不动产权籍调查测绘工作研发的一款专业的数据处理软件&#xff0c;融合了业内主流测绘软件&#xff08;南方数码地形地籍成图软件CASS和新一代房测之友BMFse&#xff09;的核…

C++ 一些在工作中遇到的小问题的c++解决脚本程序,记录用的

文章目录前言1 从"txt"文件中读取数组2 线性插值生成数组后存入“.txt”文件前言 本博客用于记录在工作中遇到的一些C小脚本。 1 从"txt"文件中读取数组 txt内文本如下图所示&#xff0c;按行记录数据&#xff0c;每组数据包含第一列为Index即索引号&…

【学习提高】JVM垃圾收集器,垃圾回收算法,一个对象从创建到回收的过程。

1、JVM垃圾收集器 不同的垃圾回收器&#xff0c;适用于不同的场景。常用的垃圾回收器&#xff1a;   串行&#xff08;Serial&#xff09;回收器是单线程的一个回收器&#xff0c;简单、易实现、效率高。   并行&#xff08;ParNew&#xff09;回收器是Serial的多线程版&…

面向对象编程(基础)1:面向对象思想精髓的理解

目录 1. 面向对象编程概述(了解) 1.1 程序设计的思路 1. 面向过程的程序设计思想&#xff08;Process-Oriented Programming&#xff09;&#xff0c;简称POP 2. 面向对象的程序设计思想&#xff08; Object Oriented Programming&#xff09;&#xff0c;简称OOP 1.2 由实…

在Android Studio通过adb命令强制安装debug版本apk到手机,且允许version code降级

在Android Studio通过adb命令强制安装debug版本apk到手机&#xff0c;且允许version code降级 切换到Terminal&#xff1a; adb install -t -d -r -g .\app\build\intermediates\apk\debug\app-arm64-v8a-debug.apk .\app\build\intermediates\apk\debug\是android studio的…

使用vue-element-admin定制化构建测试平台

基础环境搭建 vue-element-admin环境搭建 直接下载 https://gitee.com/constfiv/vue-element-admin-fix-install-problem&#xff0c;相比于https://github.com/PanJianChen/vue-element-admin.git的版本&#xff0c;这个版本好很多&#xff0c;npm intsall不会有各种依赖的问…

安装Jupyter notebook,修改Jupyter notebook打开路径,虚拟环境,以及Jupyter notebook基本操作

一、经过以下步骤你可以实现在虚拟环境中安装jupyter notebook&#xff0c;以及启动jupyter notebook。 创建虚拟环境 conda create -n demo python3.9激活虚拟环境 conda activate demo虚拟环境中安装jupyter notebook conda install jupyter notebook启动jupyter noteboo…