- 博客(138)
- 资源 (11)
- 收藏
- 关注
原创 join驱动表选择
从内存判断次数看来不论哪个作为驱动表结果都是一样的,但是考虑到扫描行数,在M和N大小确定的情况下,N小一些,整个算式的结果会更小。在决定哪个表做驱动表的时候,应该是两个表按照各自的条件过滤,过滤完成之后,计算参与join的各个字段的总数据量,数据量小的那个表就是小表。扫描表t2,把表t2中的每一行取出来,跟join_buffer中的数据做对比,满足join条件的,作为结果集的一部分返回。扫描表t2,把t2中的每一行取出来,跟join_buffer中的数据做对比,满足join条件的,作为结果集的一部分返回;
2024-04-10 10:52:24 892
原创 k8s 节点打污点
污点格式为“Key=Value:Effect”,Key和Value作为污点的标签,Value可以为空,Effect用于描述污点的效果。
2024-04-07 11:22:43 869
原创 显示文件/输出,前面/最后 n行
后n行tail -n前n行head -n针对文件head -n 5 file.txttail -n 5 file.txt针对输出| head -n 5| tail -n 5
2024-04-01 14:57:59 150
原创 ubuntu 20 虚拟机配置静态ip
在/etc/netplan/ 中得文件里(类似:01-network-manager-all.yaml)添加。addresses: [192.168.40.128/24] 就是自己设置的固定ip。其中gateway4: 就是。重新设置下ip和网关即可。
2024-04-01 14:56:11 590
原创 docker 常用指令
通过docker pull xuedongchen/controller:latest 可以拉取你的镜像。登录docker账号,输入账号密码,官网地址:hub.docker.com。其中controller是镜像名,latest是tag,表是版本。如果push失败被禁止,表示远端有相同的镜像名称,要修改tag。2.查看目前有多个dockers镜像(本地下载的)docker tag 旧镜像名 新镜像名。然后push本地镜像。会自动上传到你的仓库。
2024-04-01 14:52:14 489
原创 podman和docker 差别
综上所述,Podman 能够提供更好的安全性和管理灵活性,但缺少 Docker 的图像构建、发布、部署等流程。因此,在不同的场景中需要考虑特定的需求,选择适合的容器工具。
2024-04-01 14:51:20 711
原创 openshift和k8s的差别
另外,OpenShift 还提供了一些其他功能,如开源代码、CI/CD 管道、用户管理、环境隔离等,这些功能使 OpenShift 变得更加全面和易于使用。它提供了更丰富和自动化的功能,如自动化部署、构建、监控、日志记录等,使开发人员和运维人员能够更加专注于业务逻辑和应用程序的开发、测试和上线。相比之下,Kubernetes 只是一个容器编排和编排平台,它为容器化应用程序提供自动化部署、扩展、故障恢复和负载均衡等基本功能,但不提供比较高级别的功能,需要借助其生态系统中的工具和插件来实现。
2024-04-01 14:50:37 720
原创 kind+tidb
2.Temporary failure in name resolution(域名解析暂时失败)1.basic-tidb-0 一直启动失败 :CrashLoopBackOff。解决办法:将kind从0.10升级到最新版本1.8版本,重新开始操作。vm连接网络来回切换下,或者重启下虚拟机,暂时原因还没找到。1.安装kind,一定要使用最新版本!安装Docker-ce(社区版)二、操作,具体可参考tidb官网。3.安装kubelet。2.安装docker。安装阿里源gpg密钥。
2024-04-01 14:50:01 470
原创 OC与kubectl
综上所述,oc 针对 OpenShift 平台提供更加丰富的功能和统一的命令行风格。而 kubectl 则更加注重资源对象的管理和 Kubernetes 平台本身的设计理念。选择使用哪个命令行客户端工具,需要结合实际情况和工具实现的特定功能来选择。oc 和 kubectl 都是 Kubernetes 及其衍生产品中常用的命令行客户端工具,用于管理 Kubernetes 集群和资源对象。
2024-04-01 14:49:12 206
原创 k8s 安装
其实这三个的下载很简单,直接用apt-get就好了,但是因为某些原因,它们的下载地址不存在了。所以我们需要用国内的镜像站来下载,也很简单,依次执行下面五条命令即可。是不行的,因为这个阿里镜像站使用的ssl进行传输的,所以要先安装apt-transport-https并下载镜像站的密钥才可以进行下载。5.安装 kubectl,kubeadm以及 kubelet。直接在/etc/apt/sources.list里添加。前面依赖安装,可以参考docker安装。2.关闭 swap 内存。3.添加 k8s 镜像源。
2024-04-01 14:48:13 614
原创 k8s 常用指令
在 Pod 内的容器下次重启时,会检测到该 Annotation,进入诊断模式。注意如果 Pod 处于运行中,可以执行以下命令强制让容器重启。查看 Pod 内容器上次启动时的日志信息。可以加上-c 容器名,精确到具体容器。Pod 重建后会自动回到正常运行模式。查看 Pod 内当前容器的日志。12.查看pod中的容器。
2024-04-01 14:47:39 401
原创 k8s 基础入门
k8s中的namespace和docker中namespace是两码事,可以理解为k8s中的namespace是为了多租户,dockers中的namespace是为了网络、资源等隔离。k8s会请求底层云平台(阿里云,腾讯云、aws)上的负载均衡器(LB),将每个Node(IP+prot)作为后端添加进去,自建的云平台无法适配。pod.yaml方式创建pod,这种方式实际使用比较少,因为无法管理,无法扩缩容等等,通常通过deployment方式创建。deployment负责应用的部署、扩缩容、升级回滚。
2024-04-01 14:46:48 1345
原创 紫光云的前世今生
2005年11月,3Com从华为购入2%的股份,从而控股华为3Com。2006年11月,3Com又购入剩余49%的股份,全资控股华为3Com。2016年,紫光股份收购华三51%的股份,成为其控股股东。华三又与紫光股份与惠普成立的其他公司共同组成了新华三。新华三 开始是2003年,华为与美国3Com公司成立合资公司华为3Com。3Com投资1.65亿美元占股49%2010年,3Com被惠普收购,华三并入惠普旗下。2023年,紫光集团收购新华三其余49%股份。
2024-04-01 14:15:02 177
原创 dlv安装
到go的path目录下的bin目录,找到dlv执行文件,cp到/usr/local/bin目录下。注意:dlv要和go的版本最好保持一致。
2024-03-30 13:37:40 356
原创 GOPROXY 代理设置
在1.3版本后,golang推出了go module 机制,同时发布了一个叫做 Module proxy protocol 的协议,通过这个机制,我们可以搭建go模块代理,最后通过GOPROXY变量以指引go命令在后续抓取模块的途径。,而且很可惜 proxy.golang.org 在中国无法访问。这也是我们依赖下载时一直timeout的原因。解决指令:(会话临时性),长久的可以在配置文件中配置。在命令行输入 go env -w GOPROXY=这里只需要我们将该变量设置为GOPROXY=
2024-03-30 13:35:08 2080
原创 go 快速入门
在Golang中,程序遇到defer关键字,不会立即执行defer后的语句,二是将defer后的语句压入一个栈中(拷贝当前变量值,不会随着后面变量值变化而变化),然后继续执行后面的语句。使用场景:如果你想关闭摸个使用的资源,可以在创建该资源时随手写上defer关闭该资源,因为defer有延迟执行机制(函数执行完毕再执行defer压入栈的语句)。切片和数组:切片是数组的引用,多个切片之前同一个数组,是共享存储的。切片有3个字段的数据结构:一个是指向底层数组的指针,一个是切片的长度,一个是切片的容量。
2024-03-30 13:34:12 865
原创 go语言 私用仓库包下载
设置私有仓库,这样访问的时候,url前缀就不加proxy和sumdb。更加代码下载依赖包,自动更新mod文件。将依赖包复制到vendor目录中。
2024-03-30 12:09:41 784
原创 vitess sysbench性能测试
a) 将/usr/local/share/sysbench/common.lua 中相关的表的ddl执行注解掉,把创建表函数注释掉。2.2 数据测试 (执行10w条)2.1 数据准备(预热1w条)
2024-03-30 12:06:19 715
原创 vitess执行计划缓存 测试
在启动项中设置:gate_query_cache_size = 0。打开计划缓存,写的效率影响不大,但是读的效率提升近40~50%
2024-03-30 12:05:27 435
原创 vitess insert 代码分析
-3种执行方式:unsharded, sharded, insert-select,具体选择哪种方式,是通过ins.Opcode在构建执行计划阶段确定的值来进行判断的。--通过对值进行分片算法操作,得到相应的keyspaceIDs,后面会依据keyspaceIDs来进行分片划分,具体processPrimary分析在下面。--决定了具体执行的子类,更改后执行语句,变量值,以及涉及的表等。case *sqlparser.Delete: --删除。--构建执行类,后续的具体执行的子类,是由这里确定的。
2024-03-30 12:00:04 713
原创 HAProxy + Vitess负载均衡
如果 3 次检测为失败,则认为服务器不可用。make PREFIX=${/app/haproxy} SBINDIR=${/app/haproxy/bin} install # 将 `${/app/haproxy}` 和 `${/app/haproxy/bin}` 替换为自定义的实际路径。pidfile /opt/haproxy/pid # 将 HAProxy 进程的 PID 写入 pidfile。在执行vtgate-up.sh脚本时,执行vtgate-up-2.sh,vtgate-up-3sh。
2024-03-30 11:59:02 1595
原创 mysql8 功能特点
MySQL默认的存储引擎是InnoDB,而引入Secondary Engine,用来实现同时支持多引擎,在同一个MySQL Server上挂多个存储引擎,在支持InnoDB的同时,还可以把数据存放在其他的存储引擎上。全量的数据都存储在Primary Engine上,某些指定数据在Secondary Engine 上也存放了一份,然后在访问这些数据的时候,会根据系统参数和cost选择存储引擎,提高查询效率。在最新版本8.0.22上还支持了启动和停止某个Secondary Engine。1.查询缓存 删除了。
2024-03-30 11:57:21 190
原创 管理小技巧
1.人的思维真是有意思,做一个东西,时间越往后越文思泉涌,越能得出自己想要,但是往往带来的副作用是延期!所以要把deadline提前!(切身体会-ppt编写)
2024-03-30 11:51:10 123
原创 centos7 安装 postgresql
进入地址:https://yum.postgresql.org/repopackages.php鼠标放置红色框内,右击拷贝地址yum install 拷贝的地址例如:yum installhttps://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm安装完成后,查看yum列表,自己想安装哪个版本就安装哪个版本,这里装的是13输入/u...
2024-03-30 11:50:06 793 1
原创 个人职业规划
1.技术、证书之间的抉择?2021.3.31:取决于当前的经济情况,如需尽快的提升薪资水平,提升技术是主要渠道,等技术上来,薪资上来了。再考虑证书获取2.管理和技术,是一回事!考取证书是另外一回事(不急当下,但不可少,薪资到了立即就要做的事!)3.业务水平很重要!你工作的经历,决定你的业务水平,跳槽要规划好!...
2024-03-30 11:43:31 72
原创 MySQL5.7源码分析--优化
主要在mysql_execute_command中的execute_sqlcom_select函数进行。在此之前要通过select_precheck函数对表的select权限检查。优化主要分为prepare和optimize,然后exec执行。
2024-03-29 14:35:47 245 2
原创 MySQL5.7源码分析--解析
未命中,则进行sql解析,lex进行词法解析,yacc进行语法解析,生成解析树。然后调用mysql_execute_command函数进行优化和执行。1.获取网络包数据,拿到查询语句,放入thd->query。select语句会走的case COM_QUERY判断。2.先查询缓存,缓存命中直接返回结果,未命中则解析。功能集中在mysql_parse()函数中。查询缓存,命中直接返回。
2024-03-29 14:35:16 317
原创 MySQL5.7源码分析--指令分发
do_command函数主要通过dispatch_command函数进行指令分发操作。下面将以select语句为例,展示dispatch_command执行流程。
2024-03-29 14:34:39 123
原创 MySQL5.7源码分析--连接
这种命名管道设计更偏向于客户端-服务器通信,它们更像socket:除了用于通常的读写操作外,Windows命名管道也同时对server应用支持显式”passive”被动连接模式。> 在计算机世界,一个socket是一种内部进程通信形式,它被用于在相同主机上形成进程间的双向通信连接点(在本地系统上的一个物理文件)。mysql支持4种通信协议:TCP/IP协议、Unix Socket协议、Share Memory协议、NT管道。4.连接完成后,创建线程,加入全局线程调度,并进行连接处理,涉及以下函数。
2024-03-29 14:34:07 1060
原创 mysql5.7 源码分析--初始化
有部分系统变量需要在mysqld --initialize时使用,所以越早初始化越好,handle_early_options函数就是为了初始化这部分系统变量。将命令存储在sql_statement_names全局数组里,如SQLCOM_SELECT对应select。每个服务都应该有一个自己的UUID,如果没有的话,就创建一个。包括一些插件的初始化、默认存储引擎的初始化、最大连接数等。如所有线程的互斥锁初始化,线程缓存大小、日志名称等。删除tmp_table并初始化数据库级别的权限。
2024-03-29 14:33:00 721
原创 数据库中的 Field、 column
指数据字段,数据记录中已有定义的部分,例如数据库表中的一列,但一般特指某列某行(数据库里的特定一格)当我说field的时候,不仅要说特定格里的值还要说column name。指列,一列所有数据。
2024-03-29 14:28:48 258
原创 MySQL优化之外连接消除----空值拒绝
当tb1.col1>0的条件为true,tb2.col1>0为false时,无法满足空值拒绝了,所以最终这个语句只能采用left join进行连接。按照之前对空值拒绝的理解,第一个语句的where条件中有从表tb2的选择条件,且依据这个选择条件筛选得到的最终结果集中,可以看到,外连接中,从表的表连接列,tb2.id出现了null,因为tb2中并没有id=5的情况。当然,这个cond-->tb2.id可以换成其他的列,比如说tb2.col1>0。并没有将外连接转换为内连接,应该是条件写的并不完整,
2024-03-29 11:44:46 296
原创 数据库 逻辑优化,物理优化
物理优化:join optimize,如查询表之间是否有join的可能,如果可以join,该如何join:nested还是corss?再者驱动顺序,ab还是ba,这要去做代价分析,ab的cost多少,ba的cost多少;要去查询表的相关信息,比如多少列之类的。逻辑优化:prepare 语法解析,将sql语法解析成语法树,并进行优化,条件判断:有些条件是否可以去除,有些列是否可以不涉及等等, 等值消除,常量判断等等。来至《数据库系统实现》第五章。
2024-03-29 11:42:04 266
原创 条件下推,谓词下推
5.7和8.0 join优化时都调用cond_push()进行条件下推,在sql_optimizer.cc文件里。条件下推:将一些条件的判断 处理逻辑优化从sql层交给引擎层处理。where、having等等条件的下推:cond_push()索引index下推:idx_cond_push。比如select,update场景都会用到。
2024-03-29 11:40:54 75
原创 autocommit 与 begin/commit 优先级
begin/commit 比 autocommit优先级高!即使autocommit = 1,如果使用begin/commit语句,mysql仍会优先使用begin/commit命令控制被这组命令修饰的事务。
2024-03-29 11:39:07 130
adb.exe 工具 适用于windows调试
2019-09-19
poi-4.1.0.zip java
2019-06-03
OpenCV-4.0.0.zip
2019-05-22
libimobiledevice-Windows-ios-master.zip
2019-05-22
opencv-3.4.6.zip
2019-05-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人