自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(200)
  • 收藏
  • 关注

转载 linux 系统 UDP 丢包问题分析思路

本文转载整理自:linux 系统 UDP 丢包问题分析思路序言最近工作中遇到某个服务器应用程序 UDP 丢包,在排查过程中查阅了很多资料,总结出来这篇文章,供更多人参考。在开始之前,我们先用一张图解释 linux 系统接收网络报文的过程。首先网络报文通过物理网线发送到网卡网络驱动程序会把网络中的报文读出来放到 ring buffer 中,这个过程使用 DMA(Direct Memory Access),不需要 CPU 参与内核从 ring buffer 中读取报文进行处理,执行 IP 和 TCP

2022-05-05 11:25:35 915

原创 《postgresql指南--内幕探索》第十一章 流复制

同步流复制是是从9.1版本实现的,可以是一主多从的模式,在postgresql里主节点叫master,备节点叫standby。主备是基于日志传送的技术实现同步,主节点持续发送wal数据,备节点重放接受到的wal数据。主要介绍以下几个方面:流复制如何启动的主备之间如何传送数据主节点如何管理多个备节点主节点如何发现失败的备节点开始流复制在流复制中,三个进程协同工作,walsender在主节点发送wal数据到备节点,然后,备节点启动一个walreceiver和一个startup进程接受和重放数

2021-08-13 15:09:28 1206

原创 《PostgreSQL指南--内幕探索》第十章 基础备份与时间点恢复

在线数据库备份大致可分为逻辑备份和物理备份两类,它们各自都有优点和缺点。逻辑备份有一个缺点,即执行需要花费大量的时间。特别是对于大型数据库而言,需要花费很长时间进行备份,而从备份数据中恢复数据库可能需要更长的时间。相反,物理备份可以在相对较短的时间内备份和恢复大型数据库,因此在实际系统中,其是一个非常重要且实用的功能。在PostgreSQL中,自8.0版本开始提供了在线的全量物理备份,整个数据库集簇(即物理备份数据)的运行时快照被称为基础备份。PostgreSQL还在8.0版中引入了时间点恢复(Poin

2021-08-10 09:59:58 1043

原创 《postgresql指南--内幕探索》第九章 预写式日志(WAL)

事务日志是数据库的重要组成部分,存储了数据库系统中所有更改和操作的历史,以确保数据库不会因为故障(例如掉电或其他导致服务器崩溃的故障)而丢失数据。在PostgreSQL(以下简称PG)中,事务日志文件称为Write Ahead Log(以下简称WAL)。使用WAL不仅可以保证数据库事务操作的持久性,也可以显著地减少写磁盘的次数,因为只需要把日志文件刷新到磁盘就可以保证事务被提交,而不需要把事务改动过的每一个数据文件都刷新到磁盘。日志文件是连续写的,所以同步log的花销远小于刷新数据页的花销。特别是服务器要

2021-08-09 17:53:17 1700

原创 《postgresql指南--内幕探索》第八章 缓冲区管理

postgresql中缓冲区管理器,存储和后端进程之间的关系:概览缓冲区管理器结构PostgreSQL缓冲区管理器包括一个缓冲区表、缓冲区描述符和缓冲池,这些将在下一节中介绍。缓冲池存储数据文件的页, 如表和索引,以及自由空间映射和可见性映射的页面。缓冲池是一个数组,数据的每个插槽存储数据文件的一页。缓冲池数组的索引称为buffer_id。缓冲区标签在PostgreSQL中,可以为所有数据文件的每个页面分配一个唯一的标记,即缓冲区标签。当缓冲区管理器收到请求时, PostgreSQL使用目标页面

2021-07-12 21:49:26 1295 2

原创 《postgresql指南--内幕探索》第七章 HOT和Index-Only扫描

本章介绍与索引扫描相关的两个功能, 即Heap Only Tuple和Index-Only Scans。Heap Only Tuple (HOT)HOT是在8.3版中引入的, 当更新的行存储在旧行所在的page时,可以有效地使用索引和表的页。HOT有效的减少了vacuum操作。源码目录README.HOT描述了HOT的细节。 本章简要介绍了HOT。更新没有HOT的行假设表 “tbl” 有两列:“id"和"data”;"id"是"tbl"的主键。testdb=# \d tbl

2021-05-23 11:20:53 549

原创 《postgresql指南--内幕探索》第四章 外部数据包装器

2003年,在SQL标准中增加了一个访问远程数据的规范,称为SQL外部数据管理(SQL/MED)。自9.1版本以来,PostgreSQL开发除了FDW,实现了SQL/MED的一部分特性。在SQL/MED中,远程服务器上的表称为外部表。PostgreSQL 的外部数据包装器(Foreign Data Wrappers,FDW)使用与本地表类似的方式,通过SQL/MED来管理外部表。图1:FDW的基本概念...

2021-05-23 10:57:11 696

转载 《postgresql指南--内幕探索》第三章查询处理

该部分内容《postgresql指南–内幕探索》一书中,写的并不太好理解。因此选择了参考博客《A Tour of PostgreSQL Internals》学习笔记——查询处理分析中的内容。至于《postgresql指南–内幕探索》中的内容,可参考:Query ProcessingPostgresql的查询处理下面这张图从整体上概括了Postgresql的查询处理的步骤以及牵涉到的各个模块。其中最重要的关键的两个数据结构是查询分析树(parse tree),和查询计划树(plan tree)。Pa

2021-05-19 19:31:29 826

原创 《postgresql指南--内幕探索》第六章 清理过程

清理过程(通常简称为VACUUM)是一种维护过程,有助于 PostgreSQL 的持久运行。它的两个主要任务是删除死元组,以及冻结事务标识。为了移除死元组,清理过程有两种模式,分别是并发清理与完整清理。并发清理过程会删除表文件每个页面中的死元组,而其他事务可以在其运行时继续读取该表。相反,完整清理不仅会移除整个文件中所有的死元组,还会对整个文件中所有的活元组进行碎片整理。其他事务在完整清理运行时无法访问该表。尽管清理过程对PostgreSQL至关重要,但与其他功能相比,它的改进相对其他功能而言要慢一些。

2021-05-10 22:46:08 909

原创 《postgresql指南--内幕探索》第五章并发控制(二)

可见性检查规则可见性检查规则是一组规则,用于确定一条元组是否对于一个事务可见。该规则会用到:1.tuple中的t_xmin和t_xmax字段;2.clog3.当前的snapshot为了简便起见,在此回避了子事务和有关t_ctid的问题,只讨论最简单的情形。我们选取十条规则并将他们分为三类进行说明。t_xmin的状态为ABORTED我们知道t_xmin是一个tuple被INSERT时的事务txid。如果该事务的状态为ABORTED,说明该事务被取消,那么理所当然该事务所INSERT的tup

2021-05-10 10:40:12 756

原创 《postgresql指南--内幕探索》第五章并发控制(一)

当多个事务同时在数据库中运行时,并发控制是一种用于维持一致性与隔离性的技术,一致性与隔离性是ACID的两个属性。从宽泛的意义上来讲,有三种并发控制技术,分别是多版本并发控制(Multi-Version Concurrency Control,MVCC)、严格两阶段锁定(Strict Two-Phase Locking,S2PL)和乐观并发控制(Optimistic Concurrency Control,OCC),每种技术都有多种变体。在MVCC中,每个写操作都会创建一个新版本的数据项,并保留其旧版本。当

2021-04-25 10:42:42 933

原创 《postgresql指南--内幕探索》第二章 进程与内存架构

本文参考书籍《postgresql指南–内幕探索》的Chapter 2:Process and Memory Architecture该书的网络内容可参考:The Internals of PostgreSQL进程架构Postgresql 是一个C/S架构的关系型数据库,由多个后台进程管理数据库,下面分别介绍一些这些进程:postgres server process :是所有进程的父进程backend process:每一个客户端的连接都有一个后端进程存在backgroud process

2021-03-01 21:47:42 775

转载 《postgresql指南--内幕探索》第一章 数据库集簇、数据库和数据表

本文参考书籍《postgresql指南–内幕探索》的Chapter 1:Database Cluster, Databases and Tables该书的网络内容可参考:The Internals of PostgreSQL本文内容转载自:数据库集簇、数据库和数据表数据库集簇的逻辑结构数据库集簇(database cluster)是一组数据库(database)的集合,由一个PostgreSQL服务器管理。数据库集簇与高可用数据库集群不同,并非意味着“一组数据库服务器”,一个PostgreSQL服

2021-03-01 21:15:19 1593

转载 分布式系统之CAP理论

本文转载自:分布式系统之CAP理论并对部分内容进行了精简CAP起源CAP原本是一个猜想,2000年PODC大会的时候大牛Brewer提出的,他认为在设计一个大规模可扩展的网络服务时候会遇到三个特性:一致性(consistency)、可用性(Availability)、分区容错(partition-tolerance)都需要的情景,然而这是不可能都实现的。之后在2003年的时候,Mit的Gilbert和Lynch就正式的证明了这三个特征确实是不可以兼得的。该理论是NoSQL数据库管理系统构建的基础。。

2021-01-24 13:44:48 445

转载 shell正则表达式

本文转载自:shell正则表达式对于常用的正则表达式做一个记录。正则表达式的概念及特点正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。规定一些特殊语法表示字符类、数量限定符和位置关系,然后用这些特殊语法和普通字符一起表示一个模式,这就是正则表达式(Regular Expression)。给定一个正则表达式和另一个字符串,我们可以达到如下的目的:给定的字符串是否符合正则表达式的过滤

2020-07-25 12:44:31 230

转载 PostgreSQL体系架构

本文转载自:PostgreSQL体系架构基本体系结构PostgreSQL 使用客户机/服务器(C/S)的模式提供服务,一个PostgreSQL会话由下列相关的进程(程序)组成:(1)一个服务器端进程。该进程管理数据库文件,接受客户端与数据库的连接,且代表客户端对数据库进行操作。该进程的程序名叫做 postgres。(2)前端应用,即需要进行数据库操作的客户端应用。客户端应用可能本身就是多种多样的:它们可以是一个字符界 面的工具, 也可以是一个图形界面的应用,或者是一个通过访问数据库来显示网页的 we

2020-07-17 23:50:49 443

翻译 vertica rebalance准备工作

本文翻译整理自:Best Practices for Preparing Your Cluster for Rebalance关于vertica在rebalance过程中的原理及优化,请参考之前的博文。集群rebalance前的操作必须进行的操作清理不必要的数据删除非必要的schema,表和projections,以及大表的一些非必要的分区。...

2020-05-30 11:33:00 414

原创 kafka常用命令使用说明

查看当前kafka集群中的topic情况命令:bin/kafka-topics.sh --list --zookeeper127.0.0.1:2181列出该zookeeper中记录在案的topic列表创建Topic命令:bin/kafka-topics.sh --create --topic test0 --zookeeper 127.0.0.1:2181 --config max.message.bytes=12800000 --config flush.messages=1 --part

2020-05-27 20:15:56 681

翻译 vertica rebalance优化

本文翻译整理自:优化rebalancingvertica rebalance的介绍内容分为两部分,其中对于rebalance的基础介绍,可参考之前的博文《vertica集群增加节点(扩容)》,该部分内容主要参考rebalance期间做了哪些工作。...

2020-04-25 11:58:47 1053

转载 python paramiko模块介绍

简介ssh是一个协议,OpenSSH是其中一个开源实现,paramiko是Python的一个库,实现了SSHv2协议(底层使用cryptography)。有了Paramiko以后,我们就可以在Python代码中直接使用SSH协议对远程服务器执行操作,而不是通过ssh命令对远程服务器进行操作。转载自:https://www.cnblogs.com/xiao-apple36/p/9144092....

2020-03-28 11:37:12 935

转载 python pexpect使用介绍

pexpect 是 expect 语言的一个 Python 实现,是一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 Python 模块。pexpect 的使用范围很广,可以用来实现与 ssh、ftp 、telnet 等程序的自动交互;可以用来自动复制软件安装包并在不同机器自动安装;还可以用来实现软件测试中与命令行交互的自动化。参考:https://blog....

2020-03-28 09:54:07 2415

转载 python argparse模块介绍

argparse 是python自带的命令行参数解析包,可以用来方便地读取命令行参数。参考:https://docs.python.org/3.5/library/argparse.html#module-argparse

2020-03-28 08:30:58 272

原创 窗口函数

本文整理自:窗口函数一个窗口函数在一系列与当前行有某种关联的表行上执行一种计算。这与聚集函数有一定的相似之处,但是与通常的聚集函数不同的是,使用窗口函数并不会导致行被分组成为一个单独的输出行,而聚集函数针对每个分组只能返回单一行。下面是一个例子用于展示如何将每一个员工的薪水与他/她所在部门的平均薪水进行比较:SELECT depname, empno, salary, avg(salary)...

2020-03-27 15:40:18 181

原创 vertica用户自定义扩展开发

开发用户定义的扩展(UDx)用户自定义的扩展(UDx)是包含在外部共享库中的函数,这些库是使用Vertica SDK 以C ++,Python,Java或R开发的。外部库是使用CREATE LIBRARY语句在Vertica目录中定义的。它们最适合那些难以在SQL中执行的分析操作,或者需要经常执行但速度存在性能瓶颈的的分析操作。UDx的主要优势是:它们可以在可以使用内部功能的任何地方使用。...

2020-03-15 11:58:08 566

原创 vertica用户自定义扩展介绍

vertica允许用户使用C++,Python,Java和R编程语言开发自己的分析或数据加载工具,当要使用SQL进行的数据处理类型困难或缓慢时,它们很有用。包括以下UDx类型:用户定义的聚合函数(UDAFs)分析函数(UDAnF)标量函数(UDSF)转换函数(UDTF)用户定义的加载函数(UDL)用户定义的聚合函数(UDAFs)聚合函数对一组值执行一个运算并返回一个值。 Ver...

2020-02-25 08:50:26 879

翻译 vertica备份与恢复(二)

本博客主要介绍相似的vertica集群间数据的备份与恢复。本博客翻译整理自:Copying Data Between Similar Vertica Clusters您可以使用以下选项在另一个集群上复制Vertica数据库:复制整个数据库复制目录,架构,投影和分区。复制数据库的一部分仅复制特定的表。执行复制时,必须确保源群集和目标群集相似。这两个集群必须具有相同数量的节点,节点...

2020-02-20 20:35:54 530

翻译 vertica备份与恢复(一)

关于vertica备份与恢复的一系列文章翻译整理自:Vertica Backup and Restore: What’s Your Use Case?本篇博文主要介绍当备份集群和恢复集群规模相同的使用场景。翻译整理自:Copy and Restore Data from a Vertica Cluster to a Backup文档名词解释源集群:执行备份的数据库集群。目标集群:执行恢复...

2020-02-20 15:56:29 809

原创 vertica数据库权限

创建数据库对象(例如模式,表或视图)时,将为该对象分配所有者(即执行CREATE语句的用户)。默认情况下,数据库管理员(超级用户)及对象所有者是唯一可以对对象执行任何操作的用户。为了允许其他用户使用对象,或取消用户使用对象的权限,授权用户必须授予其他用户对该对象的权限。vertica通过GRANT/REVOKE语句授予(或撤消)权限。Vertica在V_CATALOG.GRANTS系统表中记录...

2020-02-05 18:24:34 3515 1

转载 Ambari理论及使用介绍

本文转载整理自:Ambari——大数据平台的搭建利器及Ambari——大数据平台的搭建利器之进阶篇,针对内容有重点提取,完整内容请参考原博客。Ambari 是什么Ambari 跟 Hadoop 等开源软件一样,也是 Apache Software Foundation 中的一个项目,并且是顶级项目。目前最新的发布版本是 2.0.1,未来不久将发布 2.1 版本。就 Ambari 的作用来说,就...

2020-01-15 22:07:36 2199 1

原创 vertica中SQL的执行过程

本文翻译整理自:SQL执行过程SQL执行过程一个SQL的执行过程中,依赖以下内容:启动节点:客户端在提交查询时连接到的节点优化器:评估运行查询的不同策略并选择最佳策略执行计划:查询将执行的步骤或计划执行节点:参与执行特定SQL语句的任何节点,通常包含启动节点。过程如下查询提交vertica任何一个节点都可以成为启动节点。在此节点可以做的优化是打开负载均衡,vertica支...

2020-01-14 21:17:01 1022

原创 vertica中的directed query

更多内容可参考:directed query定向查询(directed query)定向查询封装了优化器可用于创建查询计划的信息。定向查询可以实现以下目标:使用vertica升级前的查询计划。创建可提高优化程序性能的查询计划。有时,您可能希望影响优化器以在执行给定查询时做出更好的选择。例如,您可以选择其他投影,或强制使用不同的加入顺序。在这种情况下,您可以使用直接查询来创建查询计划,该...

2020-01-14 21:14:06 192

翻译 Vertica中用户登录认证

本文翻译整理自:Authentication Methods for dbadmin在vertica中,当你新建一个数据库后,默认是没有设置认证配置的。在这种情况下,Vertica假定所有用户(包括dbadmin)都具有隐式密码身份验证。用户可以使用此身份验证方法通过网络接口和本地域套接字进行身份验证。示例:默认认证登录方式首先,我们创建一个名为auth_test的新数据库:adminto...

2020-01-12 19:49:54 1318

转载 Linux多主机建立互信及集中管理

本文主要参考:Linux快速配置集群ssh互信在对多个Linux主机进行管理,特别是如大规模数据库集群进行管理时,有必要同时向集群中的每个主机发送命令。当主机数量特别多的时候,一个一个来执行还是很麻烦的,所以有必要通过脚本来执行。本文就分享了这样的脚本。当然,针对这一场景,更强大的工具是ansible,具体可参考:ansible服务部署与使用关于Linux建立多主机互信,可参考之前的博客:Ce...

2019-12-28 15:34:52 468

转载 python format 格式化函数用法详解

本文转载整理自:python format 用法详解前序:format是python2.6新增的一个格式化字符串的方法,相对于老版的%格式方法,它有很多优点:不需要理会数据类型的问题,在%方法中%s只能替代字符串类型单个参数可以多次输出,参数顺序可以不相同填充方式十分灵活,对齐方式十分强大官方推荐用的方式,%方式将会在后面的版本被淘汰format填充字符串通过位置来填充字符串p...

2019-12-15 22:18:53 2723

转载 图解SQL的Join

本文转载自:图解SQL的Join相信大家在学习数据库的使用时,都有使用过Join,对数据库中的两张或两张以上表进行连接操作。Join 分为:内连接(inner join)外连接(outer join)其中外连接分为:左外连接(left outer join)右外连接(right outer join)全外连接(full outer join)说明:1.其中外连接的“O...

2019-12-11 22:41:05 172

转载 AI:搞了半天只是曲线拟合?

本文转载自:https://www.infoq.cn/article/MiHwI2RaOODwCQz20Pds什么叫做“智能”?关于智能的定义,可以追溯到古希腊时代的那群哲学家们。他们当时关注的主要是人类与动物(而非与机器)间的区别。亚里士多德就曾经提到,接受过良好教育思维的一大特征就是能够理解那些自己并不认同的主张。那时的他当然不会想到,自己的格言如今同样适用于区分智能与人。目前,机器仍然...

2019-12-10 22:01:10 846

转载 机器学习是什么?

本文转载自:机器学习是什么?问题:机器学习是什么?认知计算该问题的第一类答案是 IBM 提出的认知计算。其目标是构建不需要显式编程的机器(计算机、软件、机器人、网站、移动应用、设备等)。 这种机器学习观点可追溯到 Arthur Samuel 在 1959 年的定义:机器学习:让计算机无需显式编程也能学习的研究领域。Samuel 的定义很好,但可能有点太模糊。1998 年,另一位著名的...

2019-12-09 22:43:22 248

转载 数据库索引(B树,B+树,哈希)

本文转载自:数据库索引(B树,B+树,哈希)数据库索引是存储引擎用于快速找到记录的一种数据结构。-----《高性能MySQL》什么是索引?索引的目的就是便于快速查找。一本书的索引就是目录,可以让我们快速定位到要查找的内容;数据库的数据是以记录的方式存在的,所以索引的目的就是便于查找某一些记录。索引类型:唯一索引:不允许其中任何两行具有相同值的索引使用主键和候选键建立的索引就是唯一索...

2019-11-24 21:53:11 328

原创 Vertica资源池

vertica资源管理请参考之前的博文:vertica资源管理vertica任务的执行过程:在初始节点创建全局执行计划,如果资源需求超过可用资源,就拒绝向执行节点分配全局执行计划在执行节点创建本地执行计划,判断需要的资源执行节点判断资源是否足够,然后执行查询或者查询排队(可能会因等待超时被拒绝)执行节点启动执行引擎,管理运行时资源处理结果并发送到初始节点聚合vertica使用资...

2019-11-16 21:27:19 979

原创 vertica中的tuple_mover操作

本博文翻译整理自:https://www.vertica.com/kb/Tuple-Mover-Best-Practices/Content/BestPractices/Tuple-Mover-Best-Practices.htm之前的博客也介绍过,vertica中带有写优化存储WOS和读优化存储ROS,tuple_mover操作就是用于处理这两种优化存储的。函数do_tm_task有两个参数...

2019-11-14 14:53:52 860

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除