mysqlsla 笔记
mysqlsla 笔记
ClickHouse 杂记
在ClickHouse中,可以采用以下方法来加快1亿明细表数据和500w维度表数据的join速度:
-
使用合适的join算法:ClickHouse提供了多种join算法,包括直接join、哈希join、并行哈希join、优雅哈希join、全排序合并join和部分合并join。根据数据量和查询需求,选择合适的join算法可以提高性能。可以通过设置join_algorithm参数来指定使用的join算法。
-
优化join条件:确保join条件使用了索引字段,以减少数据扫描的范围。可以创建适当的索引来加速join操作。
-
过滤数据:在执行join之前,尽量过滤掉不必要的数据,以减少内存消耗和IO操作。可以使用子查询或者WITH语句来预先过滤数据。
-
调整硬件资源:增加ClickHouse集群的计算和存储资源,如增加节点数量、调整硬件配置等,以提高整体性能。
-
分区表和分布式表:如果可能的话,可以考虑将数据进行分区,以便在查询时只处理特定的分区数据,减少数据量和加快查询速度。另外,使用分布式表可以将数据分散存储在多个节点上,提高并行处理能力。
-
数据预加载:将维度表数据预加载到内存中,以减少查询时的IO操作。可以使用MATERIALIZED VIEW或者缓存技术来实现数据预加载。
在ClickHouse中,SQL语言不支持像PostgreSQL或其他关系型数据库那样的循环语句。ClickHouse的设计目标是高性能的分布式列式数据库,主要用于大规模数据分析和查询。因此,ClickHouse的查询语言主要支持基于集合的操作,如SELECT、JOIN、GROUP BY等。
如果你需要在ClickHouse中执行循环操作,可以考虑使用其他编程语言(如Python、Java等)与ClickHouse进行交互,通过编程语言中的循环结构来实现你的需求。你可以在编程语言中编写循环逻辑,然后通过ClickHouse提供的API或驱动程序执行相应的查询操作。
以下是一个示例,展示了如何使用Python与ClickHouse进行交互,并在Python中使用循环来执行多个查询:
import clickhouse_driver
# 连接到ClickHouse数据库
conn = clickhouse_driver.connect(host='localhost', port=9000, database='your_database')
# 创建游标
cursor = conn.cursor()
# 定义需要执行的查询语句列表
queries = [
'SELECT * FROM table1',
'SELECT * FROM table2',
'SELECT * FROM table3'
]
# 循环执行查询语句
for query in queries:
cursor.execute(query)
result = cursor.fetchall()
# 处理查询结果
print(result)
# 关闭连接
conn.close()
在上述示例中,我们使用Python的循环结构来遍历查询语句列表,并通过ClickHouse的驱动程序执行每个查询,并处理查询结果。
需要注意的是,循环操作可能会对性能产生一定的影响,特别是在处理大规模数据时。因此,在设计查询逻辑时,应尽量避免不必要的循环操作,优化查询语句和数据模型,以提高性能和效率。
在纯SQL中,可以使用RECURSIVE WITH语句来模拟循环操作。以下是一个示例,展示了如何在PostgreSQL中使用纯SQL实现循环:
WITH RECURSIVE loop_example(counter) AS (
SELECT 1
UNION ALL
SELECT counter + 2
FROM loop_example
WHERE counter < 6
)
SELECT counter
FROM loop_example;
在上述示例中,我们使用RECURSIVE WITH语句创建了一个名为loop_example的递归查询。初始值为1,然后通过UNION ALL和递归查询自身,每次迭代时将counter加2,直到counter达到6为止。最后,我们从loop_example中选择counter列作为结果。
需要注意的是,使用递归查询来模拟循环可能会对性能产生一定的影响,特别是在处理大规模数据时。因此,在设计查询逻辑时,应尽量避免不必要的循环操作,优化查询语句和数据模型,以提高性能和效率。
- "@rushstack/eslint-patch": "^1.3.2": 用于修复 ESLint 在 Rush 项目中的一些问题。
- "@tsconfig/node18": "^18.2.0": 用于配置 TypeScript 编译器的选项,以支持 Node.js 18 版本。
- "@types/axios": "^0.14.0": 包含 Axios 库的 TypeScript 类型定义,用于在 TypeScript 项目中使用 Axios。
- "@types/jsdom": "^21.1.1": 包含 JSDOM 库的 TypeScript 类型定义,用于在 TypeScript 项目中使用 JSDOM。
- "@types/mockjs": "^1.0.7": 包含 Mock.js 库的 TypeScript 类型定义,用于在 TypeScript 项目中使用 Mock.js。
- "@types/node": "^18.17.5": 包含 Node.js 的 TypeScript 类型定义,用于在 TypeScript 项目中使用 Node.js。
- "@types/nprogress": "^0.2.0": 包含 NProgress 库的 TypeScript 类型定义,用于在 TypeScript 项目中使用 NProgress。
- "@types/qrcode": "^1.5.2": 包含 QRCode 库的 TypeScript 类型定义,用于在 TypeScript 项目中使用 QRCode。
- "@vitejs/plugin-vue": "^4.3.1": 用于在 Vite 构建工具中支持 Vue.js 的插件。
- "@vue/eslint-config-prettier": "^8.0.0": 用于在 Vue 项目中集成 ESLint 和 Prettier 的配置。
- "@vue/eslint-config-typescript": "^11.0.3": 用于在 Vue 项目中集成 ESLint 和 TypeScript 的配置。
- "@vue/test-utils": "^2.4.1": 提供了一组用于测试 Vue 组件的实用工具函数。
- "@vue/tsconfig": "^0.4.0": 用于配置 TypeScript 编译器的选项,以支持 Vue 项目。
- "eslint": "^8.46.0": JavaScript 和 TypeScript 代码的静态分析工具。
- "eslint-plugin-vue": "^9.16.1": 用于在 ESLint 中支持 Vue.js 的插件。
- "jsdom": "^22.1.0": 一个在 Node.js 环境中模拟浏览器环境的库。
- "less": "^4.2.0": 一种动态样式语言,用于编写样式表。
- "less-loader": "5": 用于在 Webpack 中加载和转换 Less 文件的加载器。
- "lodash": "^4.17.21": 一个 JavaScript 实用工具库,提供了很多常用的函数。
- "npm-run-all": "^4.1.5": 用于在 npm 脚本中并行或顺序运行多个命令。
- "prettier": "^3.0.0": 一个代码格式化工具,用于统一代码风格。
- "sass": "^1.66.1": 一种动态样式语言,用于编写样式表。
- "typescript": "~5.1.6": 一种静态类型检查的编程语言,用于编写 JavaScript 的超集。
- "unplugin-auto-import": "^0.16.6": 一个 Vite 插件,用于自动导入模块。
- "unplugin-vue-components": "^0.25.2": 一个 Vite 插件,用于自动导入 Vue 组件。
- "vite": "^4.4.9": 一种现代化的前端构建工具,用于快速构建 Web 应用。
- "vitest": "^0.34.2": 一个用于在 Vite 项目中进行单元测试的测试工具。
- "vue-tsc": "^1.8.8": 用于在 Vue 项目中进行 TypeScript 类型检查的工具。
PostgreSQL
clickhouse,sql内写循环,举个例子,要求纯sql实现
PostgreSQL,sql内写循环,举个例子,要求纯sql实现
spack/centos7
Dockerfile 构建
[root@localhost sshd]# vim Dockerfile
#基于的基础镜像
FROM spack/centos7
#镜像作者信息
MAINTAINER cw <cw@163.com>
#镜像执行的命令
RUN yum -y install perl-ExtUtils-Embed perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker perl-Time-HiRes perl-DBI perl-DBD-MySQL
RUN yum -y install httpd
RUN echo "cw-linux" >/var/www/html/index.html
COPY mysqlsla /app
WORKDIR /app
#定义时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#开启 22 端口
EXPOSE 80
#启动容器时执行指令
CMD ["httpd","-DFOREGROUND"]
https://hub.docker.com/_/centos
https://hub.docker.com/_/centos/tags
https://blog.51cto.com/u_16175492/6932082
docker pull centos:centos7
docker build -t httpd:new .
docker build -t httpd:v1 .
docker build -t httpd:v2 .
docker build -t httpd:v3 .
ulimit -n 1024
ulimit -n 1024 &&
docker build -f dockerfile-test-centos -t mycentos:1.0 .
语法:docker save -o 导出的镜像名.tar 本地镜像名:镜像标签
docker save -o mycentos-1.0.tar mycentos:1.0
语法:docker load -i 导入的镜像名.tar
docker load -i mycentos-1.0.tar
docker volume create portainer_data
docker inspect portainer_data
docker volume create data1
docker inspect data1
sudo docker run \
--name portainer \
--network micnetwork \
--ip 192.20.0.12 \
-p 9000:9000 \
-p 9443:9443 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
--restart always \
-d portainer/portainer-ce:latest
-- 宿主机 -》 容器
docker cp /opt/soft/db/applications/mysql/data/a1.log httpd-test:/app
docker cp /opt/soft/db/applications/mysql/data/fff70bb4c940-slow.log 97e4697:/app
-- 容器 -》 宿主机
docker cp 97e4697:/app/h1.sql /opt/soft/db/applications/mysql/data/
docker cp 97e4697:/app/h2.sql /opt/soft/db/applications/mysql/data/
~.mysqlsla
vi ~.mysqlsla
atomic-statements
statement-filter=+UPDATE,INSER
注意点: 这里的参数,不能加 -- 或者 -
find / -name .mysqlsla
find / -name ".mysqlsla"
find / -name ".*"
ls -al
atomic-statements
statement-filter=+UPDATE,INSERT
atomic-statements
statement-filter=+UPDATE,INSER
`atomic-statements`是一个参数,用于指定在执行数据库操作时,是否将多个操作视为一个原子操作。原子操作是指要么全部成功执行,要么全部失败回滚的操作。
`statement-filter=+UPDATE,INSERT`是一个过滤器,用于指定只对包含UPDATE和INSERT操作的语句进行原子操作。这意味着只有包含这两种操作的语句才会被视为一个原子操作,其他类型的语句将被忽略。
例如,如果有一个包含多个UPDATE和INSERT语句的事务,使用`atomic-statements`参数和`statement-filter=+UPDATE,INSERT`过滤器,可以确保这些语句要么全部成功执行,要么全部失败回滚。如果其中一个语句失败,所有的操作都将被回滚,保持数据库的一致性。
MSL和UDL是两种不同的数据库查询语言。
1. MSL(MicroSQL):MSL是一种轻量级的SQL方言,用于在微型数据库系统中执行数据库操作。它是一种简化的SQL语言,通常用于嵌入式系统或资源受限的环境中。MSL支持基本的SQL操作,如SELECT、INSERT、UPDATE和DELETE,但可能不支持一些高级功能和复杂查询。
2. UDL(Universal Data Language):UDL是一种通用数据语言,用于在分布式数据库系统中执行查询和操作。UDL旨在提供一种统一的语言,可以跨多个数据库管理系统(DBMS)进行查询和操作。UDL支持标准的SQL语法,同时还提供了一些扩展功能,如分布式查询、事务管理和数据复制等。
总结来说,MSL是一种轻量级的SQL方言,适用于嵌入式系统和资源受限的环境,而UDL是一种通用的数据语言,用于在分布式数据库系统中执行查询和操作。
我想查看ark_db的所有结果
mysqlsla -mf 'db=ark_db' --top 100 slow_1.log slow_2.log
mysqsla -sf '+SELECT,CREATE' slow.log
mysqlsla -sf '-SELECT'
1)列出以用户是usr_rx,含有ac_开头的,非SELECT类型的 前100000条记录。 --默认m/P/io 大小写敏感
mysqlsla --grep '\bac_.*\b' -mf user='usr_rx' -sf '-SELECT' --top 100000 slow.log
2) 列出含有broker_system_messages_bj 或者 broker_system_messages_oth的记录. --关键是需要打上括号。
mysqlsla --grep '(\bbroker_system_messages_bj\b)|(\bbroker_system_messages_oth.*\b)' slow.log
3) 列出ajk_propertys的所有查询,且按照SQL的rows_exam排序。
mysqlsla --grep '\bajk_propertys\b' -sf '+SELECT' --sort='re_sum' --db-inheritance slow.log
lt:表示日志类型,有slow, general, binary, msl, udl。
sf:[+-][TYPE],[TYPE]有SELECT, CREATE, DROP, UPDATE, INSERT,例如”+SELECT,INSERT”,不出现的默认是-,即不包括。
db:要处理哪个库的日志。
top:表示取按规则排序的前多少条。
sort:按某种规则排序,t_sum:按总时间排序;c_sum:按总次数排序;c_sum_p: sql语句执行次数占总执行次数的百分比。
#执行时间最长的20条sql语句(默认按时长)
[root@localhost mysqllog]# mysqlsla -lt slow --sort t_sum --top 20 slow.log
#统计慢查询文件中所有select的慢查询sql,并显示执行时间最长的20条sql语句
[root@localhost mysqllog]# mysqlsla -lt slow -sf "+select" -top 20 slow.log
mysqlsla -lt slow -sf "+select" -top 20 a1.log
-- 默认: --sort t_sum , --sort c_sum --sort c_sum_p
mysqlsla -lt slow -sf "+select" -top 20 a1.log>h2.sql
mysqlsla -lt slow --sort t_sum --top 20 a1.log>h2.sql
mysqlsla -lt slow --sort t_sum -sf "+select" -top 20 a1.log>h2.sql
mysqlsla -lt slow --sort c_sum -sf "+select" -top 20 a1.log>h2.sql
mysqlsla -lt slow --sort c_sum_p -sf "+select" -top 20 a1.log>h2.sql
docker.hetao.me
https://www.asus.com.cn/networking-iot-servers/wifi-routers/asus-wifi-routers/rt-ax68u/
https://www.asus.com.cn/store/search/index.html?keyword=RT-AX68U
cat h2.sql |more
#统计慢查询文件中的数据库为test的所有select和update的慢查询sql,并查询次数最多的20条sql语句
[root@localhost mysqllog]# mysqlsla -lt slow -sf "+select,update" -top 20 -sort c_sum -db test slow.log
mysqlsla -lt slow -sf "+select,insert,update,delete" -top 10 -sort t_sum -db tps138_com slow.log
#mysqlsla输出格式说明:
queries total: 总查询次数,unique: 去重后的sql数量
Sorted by: 输出报表的内容排序
Count : sql的执行次数及占总的slow log数量的百分比
Time : 执行时间, 包括总时间, 平均时间, 最小, 最大时间, 时间占到总慢sql时间的百分比
95% of Time : 去除最快和最慢的sql, 覆盖率占95%的sql的执行时间
Lock Time : 等待锁的时间
95% of Lock : 95%的慢sql等待锁时间
Rows sent : 结果行统计数量, 包括平均, 最小, 最大数量
Rows examined : 扫描的行数量
Database : 属于哪个数据库
Users : 哪个用户,IP,占到所有用户执行的sql百分比
Query abstract: 抽象后的sql语句
Query sample : sql样例语句
docker run -d -p 801:80 --name httpd-test httpd:v2
docker run -d -p 18001:80 --name httpd-test httpd:v1
docker run -d -p 18001:80 --name httpd-test3 -v /opt/soft/db/applications/httpd/data:/data httpd:v1
docker run -d -p 18002:80 --name httpd-test2 \
--network micnetwork \
--ip 192.20.0.12 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v data1:/data \
httpd:v1
97e4697
docker exec -it 97e4697 /bin/bash
http://192.168.33.22:18001/
docker run -d -p 801:80 --name httpd-test --restart=always httpd:new
docker pull centos:7
docker run -d eeb6ee3f44bd
docker run eeb6ee3f44bd
docker exec -it 9f5085cfb6ed /bin/bash
https://hub.docker.com/search?type=image&q=
docker run --rm -it centos:7
docker run -it centos:7
docker run --rm -it centos:7 /bin/bash
docker run -it centos:7 /bin/bash
docker run --rm -it httpd:v1 /bin/bash
docker run --rm -it httpd:v1
https://mirrors.aliyun.com/centos/7/os/x86_64/?spm=a2c6h.25603864.0.0.68b44d00HuNI1D
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/CentOS-Base2.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/CentOS-Base.repo http://centos.ustc.edu.cn/CentOS-Base.repo
curl -o /etc/yum.repos.d/CentOS-Base.repo https://lug.ustc.edu.cn/wiki/_export/code/mirrors/help/centos?codeblock=3
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
阿里源(推荐):
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
网易源:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.ustc.edu.cn/centos|g' \
-i.bak \
/etc/yum.repos.d/CentOS-Base.repo
wget http://centos.ustc.edu.cn/CentOS-Base.repo
cd /etc/yum.repos.d/ # 进入到配置文件
vi aliyun.repo # 没有vim命令,只有vi
cat aliyun.repo # 将一下代码写进aliyun.repo里面
[AppStream]
name=AppStream
baseurl=https://mirrors.aliyun.com/centos/8.5.2111/AppStream/x86_64/os/
enabled=1
gpgcheck=0
[BaseOS]
name=BaseOS
baseurl=https://mirrors.aliyun.com/centos/8.5.2111/BaseOS/x86_64/os/
enabled=1
gpgcheck=0
yum clean all && yum makecache fast # 删除原有的数据缓存并重新建立数据缓存
yum repolist # 查看yum源仓库是否建立
docker commit -m="centos7-yum" -a="cw" 66c8dfbb16e0 centos7-yum:v1
docker commit -m="centos8-yum" -a="gangshen" 5d0da3dc9764 centos8-yum:latest
centos7-yum
语法:docker commit -m="描述信息" -a="作者" 容器id 目标镜像名:[TAG]
docker commit -m="centos8-yum" -a="gangshen" 5d0da3dc9764 centos8-yum:latest
这个centos8-yum就是我们自己创建的拥有正常yum源centos8系统镜像,现在,我要使用dockerfile来创建出一个有着更多命令的镜像。
Dockerfile常用指令
FROM # 基础镜像,一切从这里开始构建
MAINTAINER # 镜像是谁写的, 姓名+邮箱
RUN # 镜像构建的时候需要运行的命令
ADD # 步骤,tomcat镜像,这个tomcat压缩包!添加内容 添加同目录
WORKDIR # 镜像的工作目录
VOLUME # 挂载的目录
EXPOSE # 保留端口配置
CMD # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代。
ENTRYPOINT # 指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD # 当构建一个被继承 DockerFile 这个时候就会运行ONBUILD的指令,触发指令。
COPY # 类似ADD,将我们文件拷贝到镜像中
ENV # 构建的时候设置环境变量!
#基础镜像
FROM centos:7
#维护该镜像的用户信息
MAINTAINER Crushlinux <crushlinux@163.com>
#配置Nginx 的YUM 源
RUN rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
#安装nginx
RUN yum -y install nginx
#安装mysql 和php
RUN rpm --rebuilddb && yum -y install mariadb-devel mariadb-server mariadb php php-fpm
#修改nginx 配置文件,使之支持PHP
ADD default.conf /etc/nginx/conf.d/default.conf
#修改php-fpm 配置文件允许nginx 访问
RUN sed -i '/^user/s/apache/nginx/g' /etc/php-fpm.d/www.conf
RUN sed -i '/^group/s/apache/nginx/g' /etc/php-fpm.d/www.conf
#设置环境变量,便于管理
ENV MARIADB_USER root
ENV MARIADB_PASS 123456
#mysql 数据库授权
ADD db_init.sh /root/db_init.sh
RUN chmod 775 /root/db_init.sh
RUN /root/db_init.sh
#添加测试页面
ADD index.php /usr/share/nginx/html/index.php
#定义时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#分别开启80 端口,443 端口,9000 端口,3360 端口
EXPOSE 80
EXPOSE 9000
EXPOSE 3306
#复制脚本,设置权限,启动容器时启动该脚本
ADD run.sh /run.sh
RUN chmod 775 /run.sh
CMD ["/run.sh"]
17:56 mysqlsla
[root@localhost sshd]# ls
Dockerfile id_rsa.pub
#基于的基础镜像
FROM centos:7
#镜像作者信息
MAINTAINER Crushlinux <crushlinux@163.com>
#镜像执行的命令
RUN yum -y install openssh-server net-tools openssh-devel lsof telnet
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
ADD id_rsa.pub /root/.ssh/authorized_keys
#定义时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#开启 22 端口
EXPOSE 22
#启动容器时执行指令
CMD ["/usr/sbin/sshd" , "-D"]
[root@localhost sshd]# ls
Dockerfile id_rsa.pub
mysqlsla filter
大致将mysqlsla 分解出来分为: Mysqlsla的安装,Mysqlsla的功能,Mysqlsla的用法,Mysqlsla 的filter,Mysqlsla的report,Mysqlsla的replay,Mysqlsla的user-defined-Logs。 其中最核心的当然是:filter以及report。
大致流程是: LOGS(UDL,defalut) -> parse -> filter -> sort -> reprot -> replay .


mysql自带的性能测试工具mysqlslap执行压力测试
https://blog.csdn.net/liaomingwu/article/details/125444372
https://www.oschina.net/p/mysqlsla?hmsr=aladdin1e1
mysqlsla 是由 hackmysql.com 推出的一款 MySQL 的日志分析工具。整体来说,功能非常强大。数据报表,非常有利于分析慢查询的原因,包括执行频率,、数据量、查询消耗等。
格式说明如下:
- 总查询次数 (queries total), 去重后的 sql 数量 (unique)
- 输出报表的内容排序 (sorted by)
- 最重大的慢 sql 统计信息,包括 平均执行时间,等待锁时间,结果行的总数,扫描的行总数.
- Count, sql 的执行次数及占总的 slow log 数量的百分比.
- Time, 执行时间,包括总时间,平均时间,最小,最大时间,时间占到总慢 sql 时间的百分比.
- 95% of Time, 去除最快和最慢的 sql, 覆盖率占 95% 的 sql 的执行时间.
- Lock Time, 等待锁的时间.
- 95% of Lock , 95% 的慢 sql 等待锁时间.
- Rows sent, 结果行统计数量,包括平均,最小,最大数量.
- Rows examined, 扫描的行数量.
- Database, 属于哪个数据库
- Users, 哪个用户,IP, 占到所有用户执行的 sql 百分比
- Query abstract, 抽象后的 sql 语句
- Query sample, sql 语句
mysqlsla 常用
#执行时间最长的20条sql语句(默认按时长)
[root@localhost mysqllog]# mysqlsla -lt slow --sort t_sum --top 20 slow.log
#统计慢查询文件中所有select的慢查询sql,并显示执行时间最长的20条sql语句
[root@localhost mysqllog]# mysqlsla -lt slow -sf "+select" -top 20 slow.log
mysqlsla -lt slow -sf "+select" -top 20 a1.log
-- 默认: --sort t_sum , --sort c_sum --sort c_sum_p
mysqlsla -lt slow -sf "+select" -top 20 a1.log>h2.sql
mysqlsla -lt slow --sort t_sum --top 20 a1.log>h2.sql
mysqlsla -lt slow --sort t_sum -sf "+select" -top 20 a1.log>h2.sql
mysqlsla -lt slow --sort c_sum -sf "+select" -top 20 a1.log>h2.sql
mysqlsla -lt slow --sort c_sum_p -sf "+select" -top 20 a1.log>h2.sql
mysqlsla -lt slow --sort c_sum_p -sf "+select" -top 20
mysqlsla -lt slow -sf "+select,update" -top 100 -sort c_sum -db hs_spin a1.log>h3.sql
-- 统计慢查询文件为a1.log的 所有select和update的慢查询sql,并把查询次数最多的3条sql,并写到h3.sql中去
mysqlsla -lt slow -sf "+select,update" -top 3 -sort c_sum a1.log|more
-- #查询记录最多的20个sql语句,并写到select.log中去
mysqlsla -lt slow --sort t_sum --top 20 a1.log|more
mysqlsla -lt slow --sort t_sum --top 3 a1.log|more
#mysqlsla输出格式说明:
queries total: 总查询次数,unique: 去重后的sql数量
Sorted by: 输出报表的内容排序
Count : sql的执行次数及占总的slow log数量的百分比
Time : 执行时间, 包括总时间, 平均时间, 最小, 最大时间, 时间占到总慢sql时间的百分比
95% of Time : 去除最快和最慢的sql, 覆盖率占95%的sql的执行时间
Lock Time : 等待锁的时间
95% of Lock : 95%的慢sql等待锁时间
Rows sent : 结果行统计数量, 包括平均, 最小, 最大数量
Rows examined : 扫描的行数量
Database : 属于哪个数据库
Users : 哪个用户,IP,占到所有用户执行的sql百分比
Query abstract: 抽象后的sql语句
Query sample : sql样例语句
Linux环境下YUM和DNF详细介绍
https://blog.csdn.net/xaosky/article/details/123034396



示例YUM配置文件:
[myrepo]
name=My Repository
baseurl=http://example.com/repo
enabled=1
gpgcheck=1
gpgkey=http://example.com/repo/RPM-GPG-KEY
示例DNF配置文件:
[myrepo]
name=My Repository
baseurl=http://example.com/repo
enabled=1
gpgcheck=1
gpgkey=http://example.com/repo/RPM-GPG-KEY
配置完成后,可以使用YUM或DNF命令来管理软件包,例如:
安装软件包:yum install <package> 或 dnf install <package>
升级软件包:yum update <package> 或 dnf upgrade <package>
卸载软件包:yum remove <package> 或 dnf remove <package>
配置yum/dnf 源
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.ustc.edu.cn/centos|g' \
-i.bak \
/etc/yum.repos.d/CentOS-Base.repo
wget http://centos.ustc.edu.cn/CentOS-Base.repo
cd /etc/yum.repos.d/ # 进入到配置文件
vi aliyun.repo # 没有vim命令,只有vi
cat aliyun.repo # 将一下代码写进aliyun.repo里面
[AppStream]
name=AppStream
baseurl=https://mirrors.aliyun.com/centos/8.5.2111/AppStream/x86_64/os/
enabled=1
gpgcheck=0
[BaseOS]
name=BaseOS
baseurl=https://mirrors.aliyun.com/centos/8.5.2111/BaseOS/x86_64/os/
enabled=1
gpgcheck=0
yum clean all && yum makecache fast # 删除原有的数据缓存并重新建立数据缓存
yum repolist # 查看yum源仓库是否建立

浙公网安备 33010602011771号