自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

那海蓝蓝的博客

生活点滴,微风拂去

  • 博客(425)
  • 收藏
  • 关注

原创 ToprowDB Dynamic Server 查询优化技术---子查询优化--02-1

ToprowDB Dynamic Server 查询优化技术华胜信泰架构师  李海翔(四)ToprowDBDynamic Server 查询优化技术之子查询本篇是《ToprowDB DynamicServer 查询优化技术》系列的第四篇,继续 探讨ToprowDB逻辑查询优化技术中的子查询优化技术。在第三篇里,初步探讨了子查询优化,接下来次将全面、深入地探讨子查询优化。首先

2017-03-13 19:09:20 480

原创 PostgreSQL V9.6 LWLock实现分析(九)

LWLock在PostgreSQL中的作用    PostgreSQL中,LWLock锁可以加在特定的对象上,如对某个进程加锁,以获取其上锁的状态信息:GetLockStatusData(void){...    for (i =0; i allProcCount; ++i)    {        PGPROC              *proc = &Proc

2017-03-13 19:09:15 979

原创 PostgreSQL V9.6 LWLock实现分析(八)

LWLock释放锁    LWLockRelease()函数释放特定的锁(参数指定的锁), LWLockReleaseAll()函数调用LWLockRelease()函数完成当前进程持有的(通过“held_lwlocks”持有)所有锁的释放。另外有个LWLockReleaseClearVar()函数配对加锁操作中的LWLockAcquireOrWait()函数使用。voidLWLo

2017-03-13 19:09:08 668

原创 ToprowDB Dynamic Server 查询优化技术---子查询优化--01-2

3.2 深入分析—相关子查询细心的读者可以发现,上一节中,我们选取的例子,都是非相关子查询,对于相关的子查询,ToprowDB和MySQL优化器的优化能力又是怎么样的呢?在ToprowDB和MySQL执行同样的查询,用WHERE条件使得子查询为相关子查询,即前面的S4语句:SELECT * FROM t3 WHERE a3 IN (SELECT a1 FROMt1 WHERE b1=

2017-03-13 19:09:04 303

原创 ToprowDB Dynamic Server 查询优化技术---子查询优化--01-1

ToprowDB Dynamic Server 查询优化技术(三)ToprowDBDynamic Server 查询优化技术之子查询本篇是《ToprowDB DynamicServer 查询优化技术》系列的第三篇,探讨ToprowDB逻辑查询优化技术中的子查询优化技术。在第二篇里,探讨了视图优化,这一次探讨子查询优化,我们也许会有一些 “故地重游似曾相识”的感觉,感觉子查询

2017-03-13 19:08:58 450

原创 ToprowDB Dynamic Server 查询优化技术--02--视图优化

ToprowDB Dynamic Server 查询优化技术华胜信泰架构师  李海翔(二)ToprowDB Dynamic Server 查询优化技术之视图本篇是《ToprowDB Dynamic Server 查询优化技术》系列的第二篇,探讨ToprowDB逻辑查询优化技术中的视图优化技术。视图优化是一个热门技术,在SQL优化技术中,视图优化非常重要。不恰当地使用视图,会造成严重的性能问题,这使

2017-03-13 19:08:54 412

原创 PostgreSQL V9.6 LWLock实现分析(六)

LWLock锁的创建   LWLock用于系统级共享资源的封锁操作,在系统的运行期间,系统级的资源需要加锁,实施操作后,被释放,如缓存区封锁的相关操作即如此。所以LWLock锁需要在整个数据库Server启动期间完成LWLock的准备工作,即被创建好然后再被使用(加锁或解锁)。CreateLWLocks()函数完成共享内存中预留锁的空间的工作,调用InitializeLWLocks()完成锁

2017-03-13 19:08:49 1523

原创 PostgreSQL V9.6 LWLock实现分析(五)

LWLock实现的技术    上一节,我们介绍了LWLock的数据结构,其中LWLock锁的“state”上的锁标志可以有两种模式,如下:typedef enum LWLockMode{    LW_EXCLUSIVE,  //排他模式    LW_SHARED,     //共享模式    LW_WAIT_UNTIL_FREE    /* A special mode

2017-03-13 19:08:45 713

原创 PostgreSQL V9.6 LWLock实现分析(四)

LWLock封锁的本质   LWLock的锁操作,符合锁操作的技术本质,加锁同样是设置一个特定的标志位,释放锁是取消标识位。如下以CheckPoint相关操作为例,进行说明,其他类似。   PostgreSQL定义LWLock结构体如下:typedef struct LWLock  //LWLock锁的数据结构,绑定了锁、锁的属主、锁的等待者这三者,PostgreSQL 9.4

2017-03-13 19:08:40 759

原创 PostgreSQL V9.6 LWLock实现分析(三)

表X-XX Wait Event Type Wait Event Name Description Lock[1] relation Waiting to acquire a lock on a relation. extend Waiting to extend

2017-03-13 19:08:32 1022

原创 PostgreSQL V9.6 LWLock实现分析(二)

表X-XX Wait Event Type Wait Event Name Description LWLockNamed[1] ShmemIndexLock Waiting to find or allocate space in shared memory. Oid

2017-03-13 19:08:28 1154

原创 PostgreSQL V9.6 LWLock实现分析(一)

LWLock   LWLock,轻量锁,主要用于封锁共享内存中的数据结构,以达到互斥访问的目的(避免并发造成的同一份数据被不同进程改写带来的不一致,即一段关键代码同时只允许一个进程进行改写)。   LWLock依赖SpinLock实现,有等待队列但没有死锁检测,能自动释放锁。所以适合使用在封锁时间较短的情况下。    本节从LWLock加锁的本质、LWLock实现的技术、LWLoc

2017-03-13 19:08:23 1341

原创 PostgreSQL V9.6 预定义的LWLock锁

预定义的LWLock锁有42个,具体如下:#define ShmemIndexLock (&MainLWLockArray[1].lock) //共享内存锁#define OidGenLock (&MainLWLockArray[2].lock) //生成Oid的值的锁#define XidGenLock (&MainLWLockArray[3].lock) //生成Xid(事务号

2017-03-13 19:08:16 541

原创 PostgreSQL V9.6 ExclusiveLock的用途

1 创建劝告锁 pg_advisory_lock_int8(PG_FUNCTION_ARGS)//在指定对象上加派他式的劝告锁 {...            SET_LOCKTAG_INT64(tag, key);            (void) LockAcquire(&tag, ExclusiveLock, true, false);...}2 对于诸如

2017-03-13 19:08:12 2160

原创 PostgreSQL V9.6 UPDATE操作加锁与隔离级别的示例

<span style="font-family:宋体;mso-ascii-theme-font:minor-fareast;mso-fareast-theme-font:minor-fareast;mso-hansi-theme-font:minor-fareast;mso-font-kerning:0pt;" > 例1,隔离级别为可串行化:<div style="mso-elemen

2017-03-13 19:08:06 692

原创 PostgreSQL V9.6 SELECT操作加锁与隔离级别的示例

SELECT操作触发的锁    例1,隔离级别为可串行化:BEGIN;SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;SELECT * FROM parent;SELECT * FROM active_locks;COMMIT;    查询active_locks视图,可以得到类似如下的结果,表明在表上增加了一个表级锁“

2017-03-13 19:08:02 756

原创 PostgreSQL V9.6显式加锁

表级显式锁PostgreSQL提供显式地对表对象加锁,所加的锁在事务结束时(commit或rollback)被释放。LOCK [ TABLE ] [ ONLY ] name [ * ] [, ...] [ INlockmode MODE ] [ NOWAIT ]where lockmode is one of:    ACCESSSHARE | ROW SHARE | RO

2017-03-13 19:07:58 1225

原创 MySQL,插入操作与锁关系的一点儿问答

MySQL5.6 innodb 数据库引擎。有一个大表A,大约8千万条数据。有个业务场景是从A表选出1千万条数据插入B表,选择语句是走索引的。1)insert into B(id,name) select id,name from A where id in (11,12,13);-- id 上有索引。在这个过程中,线上还有活动业务,有新的数据产生要插入到A表里(B表没有业务访问),大约要插入1千

2017-03-13 19:07:52 2593

原创 MySQL执行计划辨析--子查询的相关显示项的含义

有朋友问,在MySQL的执行计划中,“DEPENDENT SUBQUERY” 和 “SUBQUERY”到底是什么含义?官方文档解释如下:<table summary="This table lists select_type values and describes the meaning of each." border="1" >SUBQUERYFirst

2017-03-13 19:07:48 609

原创 [2016 DTCC 数据库内核专场] 揭开SQL优化的盖头来 解说词

2016揭开SQL优化的盖头来 解说词------ 数据库查询优化器实现技术解密(2016年5月12日)(PPT第1页)优化器被比喻为数据库引擎的发动机,这个发动机非常精密非常复杂,今天,我们从原理出发,来揭开优化器的盖头,来看看这个发动机的构造,看看这个发动机多么精密多么复杂?(PPT第2页)今天的分享,一共包括4个子话题:第1,      谁知我心,来了解谁

2017-03-13 19:07:43 500

原创 启发式规则在优化器阶段的应用

启发式规则在逻辑优化阶段的应用--源自《数据库查询优化器的艺术》P42逻辑优化阶段使用的启发式规则通常包括如下两类:q  一定能带来优化效果的,主要包括:?  优先做选择和投影(连接条件在查询树上下推)。?  子查询的消除。?  嵌套连接的消除。?  外连接的消除。?  连接的消除。?  使用等价谓词重写对条件化简。?  语义优化。?  剪掉冗余操作(一些剪

2017-03-13 19:07:39 1130

原创 主流数据库优化器的对比

0 概述  0.1 ToprowDB/Informix数据库查询优化技术概述1 逻辑优化技术   1.1 子查询优化    1.1.1 Oracle的子查询      Oracle的子查询优化之一   http://blog.163.com/li_hx/blog/static/18399141320163209495152/#      Oracle的子查询优化之二   http://blog.1

2017-03-13 19:07:34 498

原创 Oracle的子查询优化之二

续:Oracle的子查询优化之一三 EXISTS子查询的支持SELECT * FROM t1 WHERE t1.a1 =(SELECT floor(avg(t2.a2)) FROM t2WHERE t2.a2Oracle的执行计划:HASH JOIN SEMI表明嵌套层次消除,子查询被上拉,然后执行了半连接操作。Plan hash value:2230766683       

2017-03-13 19:07:27 1994

原创 Oracle的子查询优化之一

子查询优化是查询优化器的重要内容。查询优化器对子查询优化的支持程度是衡量查询优化器优劣的重要指标。在《数据库查询优化器的艺术:原理解析与SQL性能优化》一书中,介绍并对比了Pg、MySQL的优化器技术,其中包括子查询的优化技术,现在,我们来对比一下Pg、MySQL和Oracle的子查询的优化技术。总的看,Oracle的子查询优化技术还是最好的,这点可以从表一、表二看出。  

2017-03-13 19:07:23 2009

原创 MySQL的优化点总结---通过计算多种状态的百分比看MySQL的性能情况

非原创,源自 沈睿 朋友----------------------------------------------1 读写比例:show global status like 'Com_select';  获得服务器启动到目前查询操作执行的次数;show global status like 'Com_insert';  获得服务器启动到目前插入操作执行的次数;show global statu

2017-03-13 19:07:18 510

原创 语义对于优化的影响一例--外连接语义与“外连接优化和常量传递”

1 问题思考:在DQL中,语句的语义对于SQL的优化,存在什么样的影响?或者,换句话说,SQL优化的一些技术,是否存在前后次序?如果存在,遵照的是什么次序?(这个是个大话题,以后展开...)2 示例:CREATE TABLE t1 (id1 INT, a1 INT);CREATE TABLE t2 (id2 INT, a2 INT);INSERT INTO t1 VALUES (1,1), (2,

2017-03-13 19:07:13 348

原创 SQL优化实例问答---

问题:表A,表BA(c1, c2),大表,复合索引(c1,c2),数据是有序的,先按c1排序,然后按c2排序,样例数据如下:1 11 21 21 21 32 12 12 2表B(c1, c2, c3),小表,最多8000条记录,,每一行中c1是表A的外键,描述的是一个interval,例如[1,3] 表B中行与行之间的interval没有交集,换句话说,前一行中c3的值小于后一行中的c2值表B的样

2017-03-13 19:07:09 348

原创 MySQL执行计划中,ID值表明执行次序

id值表明的执行次序的问题 ---参见:http://blog.163.com/li_hx/blog/static/18399141320146219354154/ ---关于id值与执行关系:结合id值和被执行对象之间的关系,可知id的执行次序,分为如下情况:1 并列关系:如两个表之间做UNION操作,这两个对象是并列的关系,则id值小的先执行。id值相同,从上到下,依次执行。2 嵌套

2017-03-13 19:07:04 3991

原创 MySQL 执行计划中代价估算的输出信息

来源: http://dev.mysql.com/worklog/task/?id=6510EXPLAIN JSON should print cost for following:*) "query_cost" - total cost of a query block, no matter top query or a subquery.*) "sort_cost" - cost of t

2017-03-13 19:07:00 1715

原创 PostgreSQL 9.4.1---聚集函数的优化详解 ---聚集函数与索引

创建数据:CREATE TABLE t_key(id INT PRIMARY KEY, k1 INT NOT NULL,k2 INT NULL, k3p1 INT, k3p2 INT, col INT NULL);CREATE UNIQUE INDEX k1_idx_uqi ON t_key(k1);CREATE INDEX k2_idx ON t_key(k2);CREATE ...

2017-03-13 19:06:55 1386

原创 MySQL的COUNT()函数利用索引进行计算

以前写过一篇《select count(*) 和 select count(1)有什么区别?  》,参见: http://blog.163.com/li_hx/blog/static/18399141320146961258398/现执行如下SQL并进一步分析如下:----------------------------------------------mysql> CREATE TABLE t

2017-03-13 19:06:51 5980

原创 SQL优化问答

Q1: 根据关系代数运算的优化规则,总是提倡再做连接操作之前尽量提早对关系进行选择和投影操作,以减少进一步操作需要进行处理的数据量。---这是正确的,是优化的基本原则。属于逻辑优化方式中的基于启发式规则的优化。在逻辑优化阶段就完成“条件下推”以利于在执行器执行的时候能得到较少的数据参与连接操作。Q2: 那如果要提早进行选择和投影操作的话似乎必须要引入子查询才能完成,然后才能把结果集传给后续的操作。

2017-03-13 19:06:46 396

原创 MySQL--视图优化(三)

续: MySQL--视图优化(一) MySQL--视图优化(二)  2 V5.7.5 视图和FROM子句中的派生表的重构 相关工作参见:http://dev.mysql.com/worklog/task/?id=5275 2.1.1 V5.7.5 视图和FROM子句中的派生表的重构内容最近几年,MySQL的优化器进步很快,MySQL的Optimizer团队对于优化器作了许多的优化工作。My

2017-03-13 19:06:42 813 1

原创 MySQL--视图优化(二)

续: MySQL--视图优化(一)   二 MySQL视图优化方式 测试用例:创建2张表,创建一个简单视图、一个复杂视图、一个使用UNOION操作的视图,并插入少量数据。CREATE TABLE t1 (id1 INT, a1 INT UNIQUE, b1 INT, PRIMARY KEY(id1));CREATE TABLE t2 (id2 INT UNIQUE, a2 INT UNIQUE

2017-03-13 19:06:35 1207

原创 MySQL优化案例---半连接(semi join)优化方式 导致的查询性能低下

MySQL V5.6.x/5.7.x SQL查询性能问题一 简单创建一表,并使用存储过程插入一部分数据CREATE TABLE users (  user_id int(11) unsigned NOT NULL,  user_name varchar(64) DEFAULT NULL,  PRIMARY KEY (user_id)) ENGINE=InnoDB DEFAULT CHARSET

2017-03-13 19:06:27 2784 1

原创 MySQL--视图优化(一)

一 什么是视图 这个标题似乎有点简单了,一些人会想: 作为一名数据库从业者,作为一名经验丰富的DBA,天天与视图打交道, 怎么能不知道什么是视图呢?请在继续阅读之前,微闭双目,休息之余想一想, 什么是视图? 思索之后,且与如下标准定义做个比较。SQL标准定义是如下定义视图的: 1 首先,视图本质上,就是一个“查询”,而且是一个“有名字的查询”,名字是谁?--视图的名称。

2017-03-13 19:06:22 1465

原创 MySQL---从代码角度理解SQL语句结构

MySQL的SQL语句,遵循SQL标准, 可以从语法定义的角度,了解SQL语句的构成并推测其执行方式(需要知道SQL原理). 本文则是从内核的角度, 通过源码层来剖析SQL语句的构成(只以SELECT语句为例), 本文的意义,在于帮助内核实现者或者对内核对SQL实现感兴趣者掌握如何理解SQL的剖析(抛砖引玉, ^_^).如下是MySQL源码sql_lex.h的注释,非常重要, 本文以黑色字

2017-03-13 19:06:17 580

原创 MySQL--索引条件下推优化

一 什么是“索引条件下推”“索引条件下推”,称为 Index Condition Pushdown (ICP),这是MySQL提供的用某一个索引对一个特定的表从表中获取元组”,注意我们这里特意强调了“一个”,这是因为这样的索引优化不是用于多表连接而是用于单表扫描,确切地说,是单表利用索引进行扫描以获取数据的一种方式。  二 “索引条件下推”的目的用ySQL官方手册描述:The goal of IC

2017-03-13 19:06:13 1627 1

原创 MySQL--索引与字符集的关系--数据量对利用索引的影响

一 从实例入手创建表,并做查询如下:mysql> CREATE TABLE t1 (    ->   a int(11) DEFAULT NULL,    ->   b varchar(10) DEFAULT NULL,    ->   KEY b (b)    -> ) ENGINE=InnoDB DEFAULT CHARSET=latin1;Query OK, 0 rows affecte

2017-03-13 19:06:08 995

原创 数据库性能测试---也谈PostgreSQL和MySQL的随机更新测试

老唐对比PG和MySQL的更新性能很有意义,推荐仔细阅读老唐大作:PostgreSQL与MySQL随机更新性能对比测试 http://osdbablog.sinaapp.com/532.html 拜读后,受老唐启发,想出下面一些问题,也许能进一步验证Pg和MySQL的性能。1 目的:这除了对比2者UPDATE命令的性能外,更进一步考察2者整体性能.2 为什么说可以进一步考察2者整

2017-03-13 19:06:04 1285

空空如也

空空如也

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

TA关注的人

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