草庐IT

记一次达梦数据库虚拟表SQL优化记录分享

前言:遇到问题不要怕,先看一看。语句看懂了,创建个索引,优化个处理方式,30S变0.3秒,速度提升90倍。 背景:达梦数据库、督办定制功能的一个查询列表慢(虚拟表)。语句:selectidasdbrw,hzrwnr,createdate,BB,whbh01,whbh02,whbh03,zkh,ykh,sfyrq,qtkckry,(selectcount(wfrb.requestid)fromworkflow_requestbasewfrbleftjoinformtable_main_279mtonwfrb.requestid=mt.requestidwheremt.dbrw=govern_ta

记一次达梦数据库虚拟表SQL优化记录分享

前言:遇到问题不要怕,先看一看。语句看懂了,创建个索引,优化个处理方式,30S变0.3秒,速度提升90倍。 背景:达梦数据库、督办定制功能的一个查询列表慢(虚拟表)。语句:selectidasdbrw,hzrwnr,createdate,BB,whbh01,whbh02,whbh03,zkh,ykh,sfyrq,qtkckry,(selectcount(wfrb.requestid)fromworkflow_requestbasewfrbleftjoinformtable_main_279mtonwfrb.requestid=mt.requestidwheremt.dbrw=govern_ta

我的Go并发之旅、01 并发哲学与并发原语

注:本文所有函数名为中文名,并不符合代码规范,仅供读者理解参考。上下文上下文(Context)代表了程序(也可以是进程,操作系统,机器)运行时的环境和状态,联系程序整个生命周期与资源调用,是程序可以访问到的所有资源的总和,资源可以是一个变量,也可以是一个对象的引用。上下文切换所谓的上下文切换(contextswitch),指的是发生进程调度(进程切换)时,内核(kernel)要把当前进程的状态和数据保存起来以备以后使用,同时把之前保存的进程的相关状态调出来,这样新调度出来的进程才能运行。原语原语,一般是指由若干条指令组成的程序段,用来实现某个特定功能,在执行过程中不可被中断。计算机是一门人造科

我的Go并发之旅、01 并发哲学与并发原语

注:本文所有函数名为中文名,并不符合代码规范,仅供读者理解参考。上下文上下文(Context)代表了程序(也可以是进程,操作系统,机器)运行时的环境和状态,联系程序整个生命周期与资源调用,是程序可以访问到的所有资源的总和,资源可以是一个变量,也可以是一个对象的引用。上下文切换所谓的上下文切换(contextswitch),指的是发生进程调度(进程切换)时,内核(kernel)要把当前进程的状态和数据保存起来以备以后使用,同时把之前保存的进程的相关状态调出来,这样新调度出来的进程才能运行。原语原语,一般是指由若干条指令组成的程序段,用来实现某个特定功能,在执行过程中不可被中断。计算机是一门人造科

我的Go并发之旅、02 基本并发原语

注:本文所有函数名为中文名,并不符合代码规范,仅供读者理解参考。GoroutineGo程不是OS线程,也不是绿色线程(语言运行时管理的线程),而是更高级别的抽象,一种特殊的协程。是一种非抢占式的简单并发子goroutine(函数、闭包、方法)。不能被中断,但有多个point可以暂停或重新进入。goroutine在它们所创建的相同地址空间内执行,特别是在循环创建go程的时候,推荐将变量显式映射到闭包(引用外部作用域变量的函数)中。fork-join并发模型Fork在程序中的任意节点,子节支可以与父节点同时运行。join在将来某个时候这些并发分支会合并在一起,这是保持程序正确性和消除竞争条件的关键

我的Go并发之旅、02 基本并发原语

注:本文所有函数名为中文名,并不符合代码规范,仅供读者理解参考。GoroutineGo程不是OS线程,也不是绿色线程(语言运行时管理的线程),而是更高级别的抽象,一种特殊的协程。是一种非抢占式的简单并发子goroutine(函数、闭包、方法)。不能被中断,但有多个point可以暂停或重新进入。goroutine在它们所创建的相同地址空间内执行,特别是在循环创建go程的时候,推荐将变量显式映射到闭包(引用外部作用域变量的函数)中。fork-join并发模型Fork在程序中的任意节点,子节支可以与父节点同时运行。join在将来某个时候这些并发分支会合并在一起,这是保持程序正确性和消除竞争条件的关键

怎么使用硬件同步原语替代锁?

什么是硬件同步原语?硬件同步原语(AtomicHardwarePrimitives)是由计算机硬件提供的一组原子操作。我们常见的原语操作有CAS和FAA两种。CASCompareandSwap(CAS),字面意思是先比较,再计算。它的伪代码如下。>functioncas(p:pointertoint,old:int,new:int)returnsbool{if*p≠old{returnfalse}*p←newreturntrue}它的输入参数有三个:p:要修改的变量的指针old:旧值new:新值返回值是一个布尔值,标识是否赋值成功。FAAFetchandAdd(FAA),它的含义是先获取变量当

怎么使用硬件同步原语替代锁?

什么是硬件同步原语?硬件同步原语(AtomicHardwarePrimitives)是由计算机硬件提供的一组原子操作。我们常见的原语操作有CAS和FAA两种。CASCompareandSwap(CAS),字面意思是先比较,再计算。它的伪代码如下。>functioncas(p:pointertoint,old:int,new:int)returnsbool{if*p≠old{returnfalse}*p←newreturntrue}它的输入参数有三个:p:要修改的变量的指针old:旧值new:新值返回值是一个布尔值,标识是否赋值成功。FAAFetchandAdd(FAA),它的含义是先获取变量当

怎么使用硬件同步原语替代锁?

什么是硬件同步原语?硬件同步原语(AtomicHardwarePrimitives)是由计算机硬件提供的一组原子操作。我们常见的原语操作有CAS和FAA两种。CASCompareandSwap(CAS),字面意思是先比较,再计算。它的伪代码如下。>functioncas(p:pointertoint,old:int,new:int)returnsbool{if*p≠old{returnfalse}*p←newreturntrue}它的输入参数有三个:p:要修改的变量的指针old:旧值new:新值返回值是一个布尔值,标识是否赋值成功。FAAFetchandAdd(FAA),它的含义是先获取变量当

怎么使用硬件同步原语替代锁?

什么是硬件同步原语?硬件同步原语(AtomicHardwarePrimitives)是由计算机硬件提供的一组原子操作。我们常见的原语操作有CAS和FAA两种。CASCompareandSwap(CAS),字面意思是先比较,再计算。它的伪代码如下。>functioncas(p:pointertoint,old:int,new:int)returnsbool{if*p≠old{returnfalse}*p←newreturntrue}它的输入参数有三个:p:要修改的变量的指针old:旧值new:新值返回值是一个布尔值,标识是否赋值成功。FAAFetchandAdd(FAA),它的含义是先获取变量当