PostgreSQL数据库参数调优实践
PostgreSQL(简称PG)数据库的性能调优是一个复杂但至关重要的过程,特别是在处理大量数据和复杂查询时。通过合理设置和调整数据库参数,可以显著提升数据库的性能和响应速度。本文将从多个方面详细介绍PostgreSQL数据库参数调优的实践,涵盖大小、存储、并发连接数等主要参数,并提供具体例子和解释。
一、技术背景与基础知识
在深入探讨参数调优之前,了解一些基础知识和技术背景是必要的。
1. 双重缓冲区处理
PostgreSQL既使用自身的缓冲区(shared_buffers),也使用内核缓冲IO。这意味着数据会在内存中存储两次,首先是存入PostgreSQL缓冲区,然后是内核缓冲区。这被称为双重缓冲区处理。对大多数操作系统来说,这是最有效的调优方式之一。
2. 数据库性能影响因素
数据库性能受多种因素影响,包括硬件资源(CPU、内存、存储等)、数据库配置、索引使用、查询优化等。这些因素相互作用,共同影响数据库的整体性能。
3. 查询优化器
PostgreSQL的查询优化器会生成查询执行计划,选择最优的执行路径。这依赖于数据库的统计信息、表结构和SQL的写法。优化查询语句可以减少不必要的计算和数据传输,提高查询效率。
二、主要参数调优实践
1. shared_buffers
作用:shared_buffers是PostgreSQL用于缓存表数据的共享内存区域,所有连接共用。从磁盘读入的数据(主要包括表和索引)都缓存在这里。
优化方法:
- 建议设置为物理内存的25%-40%。如果设置过低,会导致频繁的磁盘访问;设置过高则会占用操作系统内存,减少可用的文件缓存。
- 根据实际工作负载和硬件配置进行调整。如果工作数据集可以很容易地放入内存中,可以增加shared_buffers的值来包含整个数据库,以便整个工作数据集可以保留在缓存中。
实际效果:
- 提高该值可以减少数据库的磁盘IO,显著提升查询性能。
- 在一个实际测试中,将shared_buffers从30GB调整到50GB后,数据库QPS从26万提升到35万。
2. work_mem
作用:work_mem声明内部排序和哈希操作可使用的工作内存大小。该内存是在开始使用临时磁盘文件之前使用的内存数目。
优化方法:
- 典型值在10MB-100MB之间。每个查询连接单独分配,因此需要根据查询复杂度和并发量合理设置。
- 对于复杂查询,可能会同时并发运行好几个排序或者哈希操作,每个都会使用这个参数声明的这么多内存。
实际效果:
- 增加work_mem有助于提高排序的速度,减少IO操作。
- 在一个实际案例中,将work_mem从4MB调整到512MB后,排序操作的Sort Method从external merge Disk变成了quicksort Memory,显著提升了排序速度。
3. effective_cache_size
作用:effective_cache_size是PostgreSQL用来判断系统可用的文件系统缓存大小的一个参数。优化器根据这个参数来决定是否使用索引扫描或全表扫描。
优化方法:
- 建议设置为物理内存的50%-75%。这是一个估算值,并不占据系统内存。
- 通过操作系统的统计信息(如free命令)来更好地估算该值。
实际效果:
- 设置稍大的值,优化器更倾向使用索引扫描而不是顺序扫描,从而提高查询性能。
4. maintenance_work_mem
作用:maintenance_work_mem控制PostgreSQL在执行维护操作时使用的内存大小,如创建索引、VACUUM等。
优化方法:
- 推荐设置为较大的值,尤其是在大规模数据集上操作时。
- 根据实际工作负载和硬件配置进行调整。
实际效果:
- 调大该值可以加快创建索引、VACUUM等命令的执行速度,从而提高数据库维护效率。
5. wal_buffers
作用:wal_buffers是日志缓冲区的大小,用于缓冲WAL(预写日志)数据。
优化方法:
- 建议设置为shared_buffers的1/32。
- 在单事务数据修改量很大或系统中并发小数据量修改的短事务较多时,可以酌情调大。
实际效果:
- 调大wal_buffers可以降低IO负担,提高数据写入性能。
6. max_connections
作用:max_connections决定允许的最大数据库连接数。
优化方法:
- 通常可以设置数百个连接。如果要使用上千个连接,建议配置连接池来减少开销。
- 根据实际工作负载和硬件配置进行调整。
实际效果:
- 合理的连接数设置可以减少系统开销和资源竞争,提高数据库并发性能。
7. fsync
作用:fsync参数控制是否强制将数据同步更新到磁盘。
优化方法:
- 设置为on时,日志缓冲区刷盘时需要确认已经将其写入了磁盘。
- 设置为off时,由操作系统调度磁盘写的操作,能更好利用缓存机制,提高IO性能。但会伴随数据丢失的风险。
实际效果:
- 在IO压力很大的情况下,将fsync设置为off可以提高数据库性能,但需要注意数据安全性。
8. autovacuum
作用:autovacuum参数控制是否开启自动清理进程,用于整理数据文件碎片和更新统计信息。
优化方法:
- 如果系统中有大量的增删改操作,建议打开自动清理进程。
- 根据系统更新量设置合适的autovacuum_naptime(自动清理进程执行清理分析的时间间隔)。
实际效果:
- 开启自动清理进程可以增加数据文件的物理连续性,减少磁盘的随机IO,同时随时更新数据库的统计信息,使优化器可以选择最优的查询计划。
9. bgwriter_delay和bgwriter_lru_maxpages
作用:
- bgwriter_delay控制后台写进程的自动执行时间。
- bgwriter_lru_maxpages控制后台写进程一次写出的脏页面数。
优化方法:
- 根据系统数据修改的压力来调整bgwriter_delay的值。如果数据修改压力一直很大,建议设置小一些的值。
- 根据系统单位时间数据的增删改量来调整bgwriter_lru_maxpages的值。
实际效果:
- 合理的bgwriter参数设置可以减少checkpoint的压力,提高数据库的整体性能。
10. checkpoint_segments和checkpoint_completion_target
作用:
- checkpoint_segments设置WAL日志的最大数量数。
- checkpoint_completion_target表示checkpoint的完成时间要在两个checkpoint间隔时间的N%内完成。
优化方法:
- 默认的WAL日志缓存可能是一个瓶颈,通常需要设置较大的值(如10以上)。
- checkpoint_completion_target可以设置为接近1的值来平滑WAL日志写入压力。
实际效果:
- 合理的checkpoint参数设置可以降低平均写入的开销,提高数据库性能。
三、索引优化
索引是加速查询速度的关键工具。合理的索引设计可以大大提高查询效率。然而,过度索引会降低写入性能并占用额外的存储空间,因此需要仔细评估。
1. 索引类型选择
- B-tree索引:最常用的索引类型,适合等值查询和范围查询。
- GIN索引:适合全文搜索和数组成员查询。
- GiST索引:适用于空间数据和模糊匹配等复杂数据类型。
2. 复合索引
对于多列条件查询,可以考虑创建复合索引。复合索引是基于表中多个列的索引,适用于查询条件涉及多个列的情况。
3. 索引维护
- 定期使用REINDEX或VACUUM命令维护索引,以减少索引碎片化,保持其性能。
- 避免对更新频繁的列创建索引。
4. 查询优化
- 通过添加条件、使用索引或合适的查询方式来限制扫描范围,避免全表扫描。
- 避免使用SELECT *,只选择需要的列。
- 减少子查询,尽量将子查询转化为JOIN或WITH查询。
- 使用LIMIT限制返回的结果数量,减少数据传输和处理时间。
- 使用EXPLAIN或EXPLAIN ANALYZE命令查看查询的执行计划,找出性能瓶颈并进行优化。
四、硬件资源优化
硬件资源是数据库性能的基础。使用高性能的硬件组件可以加速数据库操作。
1. CPU
PostgreSQL对CPU的使用是高度并行的,尤其是在执行复杂查询时。选择多核的CPU可以提高查询性能。
2. 内存
更多的内存可以提高数据库缓存效率,减少磁盘I/O操作。建议为PostgreSQL分配足够的内存资源。
3. 存储
相比传统HDD,SSD具有更快的读写速度,能够显著缩短数据库的响应时间。在条件允许的情况下,建议使用SSD作为数据库存储设备。
五、实际案例分析
以下是一个实际案例,展示了如何通过参数调优和索引优化来提升PostgreSQL数据库的性能。
1. 初始环境
- 数据库服务器配置:E5-2650 v2两颗CPU,128G内存,两块SATA盘做RAID0组成1T的磁盘。
- PostgreSQL配置:max_connections=512,shared_buffers=30720MB,maintenance_work_mem=5120MB,work_mem=4MB,effective_cache_size=96GB,wal_buffers=16MB,checkpoint_segments=32,checkpoint_completion_target=0.9,autovacuum开启,fsync=on。
2. 问题描述
数据库在处理复杂查询时响应缓慢,尤其是在高并发情况下,查询延迟显著增加,系统资源利用率不均衡,CPU和IO经常成为瓶颈。
3. 调优步骤
3.1 参数调优
(1)增加shared_buffers
- 原值:30720MB(约30GB)
- 新值:51200MB(约50GB)
- 理由:考虑到服务器有128GB内存,增加shared_buffers可以更有效地利用内存资源,减少磁盘IO。
- 效果:数据库QPS从26万提升到35万,查询响应时间缩短。
(2)调整work_mem
- 原值:4MB
- 新值:512MB
- 理由:work_mem过小,导致排序和哈希操作频繁使用磁盘IO。增加work_mem可以减少磁盘IO,提高查询性能。
- 效果:复杂查询的响应时间显著降低,Sort Method从external merge Disk变为quicksort Memory。
(3)调整effective_cache_size
- 原值:96GB
- 新值:100GB
- 理由:根据服务器的实际内存情况,稍微增加effective_cache_size,使优化器更倾向于使用索引扫描。
- 效果:查询计划更优,减少了全表扫描,提高了查询速度。
(4)调整maintenance_work_mem
- 原值:5120MB
- 新值:8192MB
- 理由:增加maintenance_work_mem可以加快创建索引、VACUUM等维护操作的速度。
- 效果:维护操作时间缩短,数据库整体性能提升。
(5)调整wal_buffers
- 原值:16MB
- 新值:32MB
- 理由:考虑到shared_buffers的增加,适当增大wal_buffers可以减少WAL写入的磁盘IO。
- 效果:写入性能略有提升。
(6)调整checkpoint相关参数
- checkpoint_segments:从32增加到64
- checkpoint_completion_target:保持不变为0.9
- 理由:增加checkpoint_segments可以减少WAL日志的写入压力,平滑checkpoint的IO负载。
- 效果:checkpoint期间的IO负载降低,数据库性能更加稳定。
(7)调整max_connections
- 原值:512
- 新值:300
- 理由:过多的连接数会增加系统开销,通过连接池管理连接可以减少资源竞争。
- 效果:系统资源利用率更加均衡,并发性能提升。
(8)考虑fsync设置
- 原值:on
- 新值:保持on,但考虑在特定场景下(如非关键数据)临时关闭以提高性能。
- 理由:fsync=on保证了数据的安全性,但在某些对性能要求极高且数据安全性要求不高的场景下,可以考虑关闭。
- 效果:在特定场景下,关闭fsync可以显著提升写入性能,但需注意数据安全性风险。
3.2 索引优化
(1)分析查询语句
- 使用EXPLAIN和EXPLAIN ANALYZE命令分析慢查询的执行计划,找出性能瓶颈。
- 发现部分查询因为缺少合适的索引而导致全表扫描。
(2)创建复合索引
- 针对多列条件查询,创建复合索引以加速查询速度。
- 例如,针对查询
SELECT * FROM table WHERE column1 = 'value1' AND column2 = 'value2'
,创建复合索引(column1, column2)
。
(3)更新统计信息
- 使用ANALYZE命令更新表的统计信息,使优化器能够选择更优的查询计划。
- 定期运行VACUUM命令以清理死行和碎片,保持数据库性能。
(4)避免过度索引
- 评估现有索引的利用率,删除不必要的索引以减少写入开销和存储空间占用。
3.3 硬件资源优化
(1)升级存储设备
- 考虑将SATA盘升级为SSD,以提高读写速度。
- 在本案例中,由于预算限制,未进行硬件升级,但未来可考虑此方案。
(2)优化网络配置
- 确保数据库服务器与客户端之间的网络连接稳定且带宽充足。
- 在本案例中,网络性能不是瓶颈,因此未进行进一步优化。
4. 调优效果
经过上述参数调优、索引优化和硬件资源评估后,数据库性能显著提升。具体表现为:
- 查询响应时间缩短,复杂查询的响应时间降低了30%以上。
- 数据库QPS从26万提升到35万,并发性能提升。
- 系统资源利用率更加均衡,CPU和IO的瓶颈问题得到解决。
- 数据库的维护操作(如创建索引、VACUUM等)时间缩短,整体性能更加稳定。
总结
PostgreSQL数据库性能调优涉及多方面,包括基础了解双重缓冲区处理、数据库性能影响因素及查询优化器。主要参数调优实践涵盖shared_buffers、work_mem、effective_cache_size等,通过合理设置可显著提升性能。索引优化包括选择索引类型、创建复合索引及定期维护。硬件资源如CPU、内存和存储的升级也能大幅提升性能。实际案例显示,通过参数调优、索引优化和硬件评估,数据库查询响应时间缩短,QPS提升,资源利用率更均衡,维护操作时间缩短,整体性能显著提高。
相关文章:
PostgreSQL数据库参数调优实践
PostgreSQL(简称PG)数据库的性能调优是一个复杂但至关重要的过程,特别是在处理大量数据和复杂查询时。通过合理设置和调整数据库参数,可以显著提升数据库的性能和响应速度。本文将从多个方面详细介绍PostgreSQL数据库参数调优的实…...
Leetcode - 144双周赛
目录 一,3360. 移除石头游戏 二,3361. 两个字符串的切换距离 三,3362. 零数组变换 III 四,3363. 最多可收集的水果数目 一,3360. 移除石头游戏 本题直接模拟过程,可以额外使用一个布尔变量标记谁赢&…...
微信小程序全局配置:TabBar与页面配置详解
微信小程序全局配置:TabBar与页面配置详解 引言 随着移动互联网的迅猛发展,微信小程序作为一种新兴的应用形式,因其便捷性和丰富的功能而受到广泛欢迎。在小程序的开发过程中,全局配置是非常重要的一环,尤其是tabBar和页面的配置。本文将深入探讨微信小程序的全局配置,…...
Linux创建免密登陆(错误:Permission denied (publickey,gssapi-keyex,gssapi-with-mic))
报错截图 解决方法 1. mkdir -p ~/.ssh 2. chmod 700 ~/.ssh 3. ssh-keygen,一直回车 4. chmod 600 /root/.ssh/id_rsa 5. 将公钥内容追加到服务器上,cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 6. chmod 600 ~/.ssh/authorized_keys…...
机器学习深掘临床研究中小分子代谢标志物的探索与应用
摘要 随着生命科学的发展,小分子生物标志物在临床研究中的作用日益凸显。机器学习技术为挖掘小分子生物标志物提供了强大工具。本文介绍了小分子生物标志物的定义、分类及在临床医学中的应用,阐述了常用机器学习算法在生物标志物挖掘中的优势࿰…...
计算机网络 第4章 网络层
计算机网络 (第八版)谢希仁 第 4 章 网络层4.2.2 IP地址**无分类编址CIDR**IP地址的特点 4.2.3 IP地址与MAC地址4.2.4 ARP 地址解析协议4.2.5 IP数据报的格式题目2:IP数据报分片与重组题目:计算IP数据报的首部校验和(不正确未改) …...
Android按键点击事件三种实现方法
1. 在xml文件中为 Button 添加android:onclick属性 由于没有onclick这个函数,onclick下面会提示红色波浪线错误,然后单击一下"onclick"按住键盘上AltEnter键,选择在activity中生成函数 public void onclick(View view) {Toast.makeText(this,&…...
微信小程序中会议列表页面的前后端实现
题外话:想通过集成腾讯IM来解决即时聊天的问题,如果含语音视频,腾讯组件一年5万起步,贵了!后面我们改为自己实现这个功能,这里只是个总结而已。 图文会诊需求 首先是个图文列表界面 同个界面可以查看具体…...
决策树——基于乳腺癌数据集与cpu数据集实现
决策树——乳腺癌数据实现 4.1 训练决策树模型,并计算测试集的准确率 1. 读入数据 from sklearn import datasets from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import confusion_matrix …...
2024年11月24日Github流行趋势
项目名称:FreeCAD 项目维护者:wwmayer, yorikvanhavre, berndhahnebach, chennes, WandererFan等项目介绍:FreeCAD是一个免费且开源的多平台3D参数化建模工具。项目star数:20,875项目fork数:4,117 项目名称࿱…...
库的操作.
创建、删除数据库 创建语法: CREATE DATABASE [IF NOT EXISTS] db_name[ ]是可选项,IF NOT EXISTS 是表明如果不存在才能创建数据库 //查看数据库,假设7行 show databases; //创建数据库 --- 本质在Linux创建一个目录 create database databa…...
Go错误与日志处理—推荐实践
错误的分类 在 Go 语言中,错误是通过实现 error 接口的类型表示的,但不同场景下的错误可以按性质和用途进行分类。以下是 Go 语言错误的常见分类,以及每类错误的解释和示例: 标准错误类型 标准库中定义了许多常见的错误类型&…...
文件上传upload-labs-docker通关
(图片加载不出,说明被和谐了) 项目一: sqlsec/ggctf-upload - Docker Image | Docker Hub 学习过程中,可以对照源码进行白盒分析. 补充:环境搭建在Linux虚拟机上的同时,以另一台Windows虚拟机进行测试最…...
C语言——数组基本知识(一)
目录 一.一维数组的初始化 二.数组的排序 ①冒泡排序: 代码: 没有第二个for循环运行结果如下: 正确的运行结果如下: ②选择排序 代码如下: 运行结果如图: 往期回顾: 一.一维数组的初始…...
vue2日历组件
【效果图】 <template><div style"width: 100%"><!-- <div> --><!-- <div>{{ startDate.getMonth() 1 - startDate.getDate() }}</div><div>{{ endDate.getMonth() 1 - endDate.getDate() }}</div> --&g…...
Unity C# 影响性能的坑点
c用的时间长了怕unity的坑忘了,记录一下。 GetComponent最好使用GetComponent<T>()的形式, 继承自Monobehaviour的函数要避免空的Awake()、Start()、Update()、FixedUpdate().这些空回调会造成性能浪费 GetComponent方法最好避免在Update当中使用…...
Redis(概念、IO模型、多路选择算法、安装和启停)
一、概念 关系型数据库是典型的行存储数据库,存在的问题是,按行存储的数据在物理层面占用的是连续存储空间,不适合海量数据存储。 Redis在生产中使用的最多的是用作数据缓存。 服务器先在缓存中查询数据,查到则返回,…...
多线程
线程是什么? 1、线程是进程的执行分支,一个进程内部的控制程序 2、一个进程至少有一个执行线程 3、从CPU角度来看,线程就是一个更轻量化的线程 4、线程在进程内部运行,所以本质就是在进程地址空间上运行 注意: 一…...
Spring Boot林业产品推荐系统:用户指南
摘 要 网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。因此林业产品销售信…...
计算机网络 实验八 应用层相关协议分析
一、实验目的 熟悉CMailServer邮件服务软件和Outlook Express客户端软件的基本配置与使用;分析SMTP及POP3协议报文格式和SMTP及POP3协议的工作过程。 二、实验原理 为了观察到邮件发送的全部过程,需要在本地计算机上配置邮件服务器和客户代理。在这里我…...
实战ansible-playbook:Ansible Vault加密敏感数据(三)
在实际生产环境中,使用 Ansible Vault 来加密敏感数据是一种常见的做法。以下是一个详细的步骤和实际生产环境的使用案例,展示如何使用 Ansible Vault 来加密和管理敏感数据。 1. 安装 Ansible 确保你已经安装了 Ansible。如果还没有安装,可以使用以下命令进行安装: # 在…...
oracle 12c查看执行过的sql及当前正在执行的sql
V$SQL 提供了已经执行过及正在执行的SQL语句的信息。 一 查看共享池中所有sql的统计信息 #统计共享池中某类sql执行次数,总体执行时长,平均执行时长等信息,并按总体执行时长降序排序 SELECT INST_ID,SQL_ID,SQL_TEXT,SQL_FULLTEXT,EXECUTI…...
【大模型】Spring AI Alibaba 对接百炼平台大模型使用详解
目录 一、前言 二、Spring AI概述 2.1 spring ai是什么 2.2 Spring AI 核心能力 2.3 Spring AI 应用场景 三、Spring AI Alibaba 介绍 3.1 Spring AI Alibaba 是什么 3.2 Spring AI Alibaba 核心特点 3.3 Spring AI Alibaba 应用场景 四、SpringBoot 对接Spring AI Al…...
CSS:怎么把网站都变成灰色
当大家看到全站的内容都变成了灰色,包括按钮、图片等等。这时候我们可能会好奇这是怎么做到的呢? 有人会以为所有的内容都统一换了一个 CSS 样式,图片也全换成灰色的了,按钮等样式也统一换成了灰色样式。但你想想这个成本也太高了…...
Maven 常用命令
Maven 是一个强大的构建自动化工具,主要用于 Java 项目的管理和构建。 理解 Maven 命令对于高效管理与构建您的 Java 项目至关重要。 在本篇博客中,我们将探索每个 Java 开发者都应该掌握的一些最重要的 Maven 命令。 1. 设置 Maven 在深入探讨 Mave…...
【算法day1】数组:双指针算法
题目引用 这里以 1、LeetCode704.二分查找 2、LeetCode27.移除元素 3、LeetCode977.有序数组的平方 这三道题举例来说明数组中双指针的妙用。 1、二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜…...
CTF之密码学(DES)
一、基本原理 DES加密使用相同的密钥进行加密和解密操作。它使用一个56位的密钥(另外8位为奇偶校验位,不直接参与加密过程,因此实际密钥长度为56位),对64位的数据块进行加密,得到64位的密文。加密过程主要…...
【css实现收货地址下边的平行四边形彩色线条】
废话不多说,直接上代码: <div class"address-block" ><!-- 其他内容... --><div class"checked-ar"></div> </div> .address-block{height:120px;position: relative;overflow: hidden;width: 500p…...
Linux—进程概念学习-03
目录 Linux—进程学习—31.进程优先级1.1Linux中的进程优先级1.2修改进程优先级—top 2.进程的其他概念3.进程切换4.环境变量4.0环境变量的理解4.1环境变量的基本概念4.2添加环境变量—export4.3Linux中环境变量的由来4.4常见环境变量4.5和环境变量相关的命令4.6通过系统调用获…...
设计模式之破环单例模式和阻止破坏
目录 1. 序列化和反序列化2. 反射 这里单例模式就不多说了 23种设计模式之单例模式 1. 序列化和反序列化 这里用饿汉式来做例子 LazySingleton import java.io.Serializable;public class LazySingleton implements Serializable {private static LazySingleton lazySinglet…...
c++(斗罗大陆)
这次,作者编了斗罗大陆的武魂、魂力等级,目前只写到了11级 #include<iostream> #include<conio.h> #include<windows.h> #include<stdlib.h> #include<stdio.h> #include<time.h> #include<strin…...
NodeJs使用Addon调用C++
本文介绍的是NodeJs使用node-addon-api调用C的方法 node-addon-api是一个C封装,基于N-API构建,目的是提供一个更高级和更易用的接口,但它仍然依赖N-API。 官方参考文档 开发环境 必须具备NodeJs环境 Window配置NodeJs环境(绅士版…...
YOLOv11(Ultralytics)视频选定区域目标统计计数及跟踪
在计算机视觉的众多应用场景中,对特定区域的目标进行检测、跟踪与计数是一个常见且重要的需求。无论是在智慧交通中统计通过特定路口的车辆数量,还是在零售分析中追踪进入特定区域的顾客行为,这一功能都发挥着不可或缺的作用。 随着深度学习…...
【Nginx系列】Nginx配置优先级
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
搭建私有docker仓库
1. 安装docker依赖包 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sudo yum install docker-ce docker-ce-cli containerd.io sudo systemctl …...
C语言练级->##__VA_ARGS__(可变参数)的用法
有什么用? 通常__VA_ARGS__用于宏定义,其中关于日志宏需要用的,printf 等支持可变参数的函数的宏封装。 首先我们先知道这个__VA_ARGS__的英文全称是“Variadic Arguments” 叫可变参数。说到可变参数学过C语言的朋友们应该都会想到printf&…...
在 wordpress 中简易目录插件添加滑动条
实现思路 给目录容器添加一个 固定高度,并设置 CSS 的 overflow 属性 为 auto 或 scroll,使其内容可滚动。确保目录的滚动行为独立于页面的整体滚动。优化用户体验,添加平滑滚动效果。 操作步骤 1. 检查目录的 HTML 结构 首先,…...
Linux和Ubuntu的关系
Linux和Ubuntu的关系: 1. Linux本身是内核,Ubuntu系统是基于Linux内核的操作系统。 2. Linux内核操作系统的构成: 内核、shell、文件系统、应用程序 -应用程序:文本编辑器等 -文件系统:文件存放在存储设备上的组织方…...
【大数据学习 | Spark-Core】详解Spark的Shuffle阶段
1. shuffle前言 对spark任务划分阶段,遇到宽依赖会断开,所以在stage 与 stage 之间会产生shuffle,大多数Spark作业的性能主要就是消耗在了shuffle环节,因为该环节包含了大量的磁盘IO、序列化、网络数据传输等操作。 负责shuffle…...
缓存方案分享
不知道大家平常更新缓存是怎么做的,但是大部分时候都是更新数据的同时更新缓存,今天和同事一起聊到一个缓存方案的问题,感觉很有趣、非常精妙,记录一下。 基于此本文将介绍几种常见的缓存更新策略,包括简单的缓存覆盖…...
从零开始配置Qt+VsCode环境
从零开始配置QtVsCode环境 文章目录 从零开始配置QtVsCode环境写在前面扩展安装及配置Qt Configure配置 VsCode创建Qt工程VsCodeQMakeMinGwVsCodeQMakeMsvcVsCodeCMakeMinGwVsCodeCMakeMsvcQtCreatorQMakeMinGw->VsCodeQtCreatorQMakeMsvc->VsCodeQtCreatorCMakeMinGw-&g…...
Linux中离线安装gcc
gcc在安装一些其他工具的经常用到,在此记录下如何安装gcc。 1.在线安装 yum -y install gcc 2.离线安装 2.1 获取安装包链接: https://pan.baidu.com/s/1oDvt64ByWs1w-evz5TXU7w?pwd9cfo mpfr-3.1.1-4.el7.x86_64.rpmlibmpc-1.0.1-3.el7.x86_64.rp…...
告别 Kafka,拥抱 Databend:构建高效低成本的用户行为分析体系
用户行为数据埋点指标是数据仓库中不可或缺的重要数据源之一,同时也是企业最宝贵的资产之一。通常情况下,用户行为数据分析包含两大数据源:用户行为分析日志和上游关系型数据库(如 MySQL)。基于这些数据,企…...
【python 迪杰斯特拉-最短路径算法】
- 算法实现 import heapq import networkx as nx import matplotlib.pyplot as pltdef dijkstra(graph, start, goal):distances {node: float("infinity") for node in graph}distances[start] 0parents {node: None for node in graph}priority_queue [(0, st…...
从〇开始深度学习(0)——背景知识与环境配置
从〇开始深度学习(0)——背景知识与环境配置 文章目录 从〇开始深度学习(0)——背景知识与环境配置写在前面1.背景知识1.1.Pytorch1.2.Anaconda1.3.Pycharm1.4.CPU与GPU1.5.整体关系 2.环境配置2.1.准备工作2.1.1.判断有无英伟达显卡2.1.2.清理电脑里的旧环境 2.1.安装Anaconda…...
【NLP 2、机器学习简介】
人生的苦难不过伏尔加河上的纤夫 —— 24.11.27 一、机器学习起源 机器学习的本质 —— 找规律 通过一定量的训练样本找到这些数据样本中所蕴含的规律 规律愈发复杂,机器学习就是在其中找到这些的规律,挖掘规律建立一个公式,导致对陌生的数…...
多目标优化算法——多目标粒子群优化算法(MOPSO)
Handling Multiple Objectives With Particle Swarm Optimization(多目标粒子群优化算法) 一、摘要: 本文提出了一种将帕累托优势引入粒子群优化算法的方法,使该算法能够处理具有多个目标函数的问题。与目前其他将粒子群算法扩展…...
Edify 3D: Scalable High-Quality 3D Asset Generation
Deep Imagination Research | NVIDIA 目录 一、Abstract 二、核心内容 1、多视图扩散模型 3、重建模型: 4、数据处理模块: 三、结果 1、文本到 3D 生成结果 2、图像到 3D 生成结果 3、四边形网格拓扑结构 一、Abstract NVIDIA 开发的用于高质量…...
探索校企合作新模式:职业院校大数据专业实验(实训)室建设指南
一、引言 作为一种强大的信息处理与分析工具,大数据技术在企业管理、科研探索、社会治理等多个领域均产生了广泛而深远的影响。在此背景下,大数据实验室的建设显得尤为重要,而校企合作则为这一建设提供了坚实的支撑。学校借助企业资源&#…...
YOLO的框架及版本迭代
YOLO(You Only Look Once)是一种非常流行的实时目标检测算法,其特点是将目标检测任务转换为一个回归问题,通过一次前向传播就可以同时完成目标的分类和定位。以下是YOLO框架的整体架构和工作原理: 一、YOLO的基本框架…...