在线上环境中,偶尔会发生一些令人“我靠”的问题,其实一部分问题源于数据库。当开发环境、测试环境没有出现的问题在线上环境中却偶然出现时,这也是解决问题的一个方向。 脏读 数据库隔离级别为读未提交的时候,可能发生脏读。读未提交指当会话 A 的数据库操作尚未commit时,会话 B 可以读取到这个未提交的数据。而此时如果会话 A 因为某些原因rollback了,那么会话 B 读取的数据就是错误的,也就是脏读。当隔离级别提高到读已提交时,则可以避免脏读。 不可重复读 简单的理解就是多次读取结果不一致,在会话 A 中多次相同…

2023年01月01日 0条评论 2557点热度 0人点赞 路灯 阅读全文

MySQL有哪些锁呢,从锁范围大小可划分为全局锁、表级锁、行级锁,下面按照这个顺序分别记录一下这些锁的机制及其可用的应用场景。 说明:本文阐述的MySQL锁机制是基于MySQL的innoDb引擎,未明确指明隔离级别的默认都为可重复读。 全局锁 全局锁是指对整个数据库实例进行加锁(可理解为库级别锁?),加全局锁的命令为:flush tables with read lock(FTWRL)。FTWRL锁定整库为只读状态,解锁时用unlock tables进行解锁,或者客户端断开链接自动释放锁。FTWRL做了什么呢?首先…

2023年01月01日 0条评论 2713点热度 0人点赞 路灯 阅读全文

MySQL优化器可以生成Explain执行计划,我们可以通过执行计划查看是否使用了索引,使用了哪种索引? 但是到底为什么会使用这个索引,我们却无从得知。 好在MySQL提供了一个好用的分析工具 — optimizer trace(优化器追踪),可以帮助我们查看优化器生成执行计划的整个过程,以及做出的各种决策,包括访问表的方法、各种开销计算、各种转换等。 1. 查看optimizer trace配置 show variables like '%optimizer_trace%'; 输出参数详解: optimizer_…

2023年01月01日 2条评论 2906点热度 26人点赞 路灯 阅读全文

查看是否支持 SSL 首先在 MySQL 上执行如下命令, 查询是否 MySQL 支持 SSL: 当 have_ssl 为 YES 时, 表示此时 MySQL 服务已经支持 SSL 了. 如果是 DESABLE, 则需要启用 MySQL 的 SSL 功能. 使用 OpenSSL 创建 SSL 证书和私钥 新建一个目录用于存放生成的证书和私钥 警告: ca和server、client的值必须不一致! server、client的Common Name的值必须不一致! server、client的其它值必须一致! //…

2022年12月30日 0条评论 2826点热度 0人点赞 路灯 阅读全文

现在很多人喜欢用md5或md5+salt加密密码存储在数据库中,从技术的角度来说,MD5真的安全,因为MD5是不可逆的,没办法解密,除了撞库这样的方式。关于撞库简单来说就是通过建立大型数据库,将常用的各种句子密码等加密成为密文,并存储在数据库中;然后拿着密文到数据库网站查询,就有可能查到密码。 但在PHP中有更好的密码存储方式:Password Hashing,主要用到了4个函数: //查看哈希值的相关信息 array password_get_info (string $hash) //创建hash密码 stri…

2022年12月30日 0条评论 3272点热度 0人点赞 路灯 阅读全文

Redis的数据是全部存储在内存中的,如果机器突然宕机,那么数据就会全部丢失,因此需要有持久化机制来保证数据不会因为宕机而丢失。Redis 为我们提供了两种持久化方案,一种是基于快照的 RDB,另外一种是基于日志的 AOF。 1. RDB RDB(Redis Database) 通过快照的形式将数据保存到磁盘中。所谓快照,可以理解为在某一时间点将数据集拍照并保存下来。Redis 通过这种方式可以在指定的时间间隔或者执行特定命令时将当前系统中的数据保存备份,以二进制的形式写入磁盘中,默认文件名为dump.rdb。 R…

2022年12月30日 0条评论 2535点热度 0人点赞 路灯 阅读全文

找出占用CPU内存过高的进程 目的:服务器CPU占用高,找出最高的进程分析。 CPU占用率分析 ps -eo user,pid,pcpu,pmem,args --sort=-pcpu |head -n 10 内存占用率分析 ps -eo user,pid,pcpu,pmem,args --sort=-pmem |head -n 10 监控脚本 #!/bin/bash echo "-------------------CUP占用前10排序--------------------------------&qu…

2022年12月29日 0条评论 2760点热度 0人点赞 路灯 阅读全文

在实际开发中,为了提高开发的效率,我们会把常用到的功能封装成方法,这样后期开发需要,拿来即用。 这里分享33个在实际开发中经常需要用到的功能(已封装成方法),分享给到大家。 1、加载js ||css || style const loadRes = function(name, type, fn) { // 加载js || css || style let ref if (type === 'js') { // 外部js ref = document.createElement('sc…

2022年12月29日 0条评论 2767点热度 0人点赞 路灯 阅读全文

1、数组合并 常规写法 利用concat方法来合并数组 const apples = ["红苹果", "绿苹果"]; const fruits = ["西瓜", "草莓", "葡萄"].concat(apples); console.log(fruits); // ['西瓜', '草莓', '葡萄', '红苹果', '绿苹果&#…

2022年12月29日 0条评论 2673点热度 0人点赞 路灯 阅读全文

前言 使用win11自带的SSH工具或在Linux上登录Linux,不需要每次都输入密码。重新整理和操作并记录下来,所有的操作都可在win11的CMD命令行和Linux命令行中完成。 生成公钥文件 ssh-keygen -t rsa 上传公钥文件(win11) 找到自己的公钥路径 (C:\Users\用户名\.ssh) scp C:\Users\用户名\.ssh\id_rsa.pub root@192.168.0.10:~/.ssh 重命名公钥文件 登录linux,此时仍需要密码登陆 ssh root@192.16…

2022年12月29日 0条评论 2950点热度 0人点赞 路灯 阅读全文
18910111216