加载中…
  
博文
分类: 数据库
MySQL 表关联的算法是 Nest Loop Join,是通过驱动表的结果集作为循环基础数据,然后一条一条地通过该结果集中的数据作为过滤条件到下一个表中查询数据,然后合并结果。


例: user表10000条数据,class表20条数据

select * from user u left join class c u.userid=c.userid

这样则需要用user表循环10000次才能查询出来,而如果用class表驱动user表则只需要循环20次就能查询出来。

由于MySQL使用BTREE结构,内部查询成本(3层查找or4层查找)和外部循环成本不成比例。

因此建议内表走索引,也叫INLJ,但是如果内表是二级索引,效率也低,因为要回表查主键。

如果都是全表扫描(NJL),则相差不多,成本也很高,笛卡尔积。

(2019-06-28 19:53)
分类: 数据库

顺序和随机怎么比?

一般来说,顺序访问用吞吐量(Throughput)做度量指标,而随机访问用每秒执行的请求数(IOPS)做度量指标,按说是没啥可比性的。但是如果没有可比性,我在实际编程的时候应该怎么选?难道因为没得比就随便选了?这显然不可能,因此还是要比的。但是怎么比?

以一个数据库系统来说,索引用B树或者LSM-tree

1.内核级线程:

(1)线程的创建、撤销和切换等,都需要内核直接实现,即内核了解每一个作为可调度实体的线程。
(2)这些线程可以在全系统内进行资源的竞争。
(3)内核空间内为每一个内核支持线程设置了一个线程控制块(TCB),内核根据该控制块,感知线程的存在,并进行控制。

标签:

股票

分类: 网络及socket
epoll的红黑树由一个互斥量保护,ready list是自旋锁保护的。

ready list涉及到add\mod\wait
红黑树涉及到add\mod\del

1 等待队列实现原理
1.1 功能介绍
  进程有多种状态,当进程做好准备后,它就处于就绪状态(TASK_RUNNING),放入运行队列,等待内核调度器来调度。当然,同一时刻可能有多个进程进入就绪状态,但是却可能只有1个CPU是空闲的,所以最后能不能在CPU上运行,还要取决于优先级等
(2014-10-16 15:18)
标签:

it

分类: 数据库

程序环境

函数原型:sword OCIInitialize (ub4 mode,CONST dvoid *ctxp,CONST dvoid *(*malocfp) (),
CONST dvoid *(*ralocfp)(),
CONST void (*mfreefp)())
(2014-07-17 11:54)
分类: 网络及socket

http://www.xianren.org/uploads/2012/05/zhuabao.jpg

从图3-14可以看到ACK=7743,len=0;而4832的seq=9887,故中间有数据包丢失,所以211.144.69.242(设定为A)向10.10.80.54(设定为B)发送TCP Previous segment lost,说明数据丢失。4843行显示B向A发送数据包,告诉A包丢失之前(即4841)的ACK信息。图3-15又出现了数据包丢失。(图3-16)4852行则显示TCP通信的状态TCP Fast Retransmission,表示快速重传。

(2013-12-03 15:04)
标签:

it

分类: 网络及socket

EINTR:
阻塞的操作被取消阻塞的调用打断。如设置了发送接收超时,就会遇到这种错误。
只能针对阻塞模式的socket。读,写阻塞的socket时,-1返回,错误号为INTR。另外,如果出现EINTR即errno为4,错误描述 Interrupted system call,操作也应该继续。如果recv的返回值为0,那表明连接已经断开,接收操作也应该结束。
 
ETIMEOUT:
1、操作超时。一般设置了发送接收超时,遇到网络繁忙的情况,就会遇到这种错误。
2、服务器做了读数据做了超时限制,读时发生了超时。
3、错误被描述为“connect time out”,即“连接超时”,这种情况一般发生在服务器主机崩溃。此时客户 TCP 将在一定时间内(依具体实现)持续重发数据分节,试图从服务 TCP 获得一个 ACK 分节。当最终放弃尝试后(此时服务器未重新启动),内核将会向客户进程返回 ETIMEDOUT 错误。如果某个中间路由器判定该服务器主机已经不可达,则一般会响应“destination unreachable”-“目的地不可达”的ICMP消息,相应的客户进程返回的错误是 EHOSTUNREACH 或ENETUNREACH。当服务器重新启动后,由于 TCP 状态丢失,之前所有的连接

标签:

it

分类: C基础

http://blog.csdn.net/rstevens/article/details/3839877

 

数组

概念

到目前为止我们已经介绍了两类有序集合:GSList 和 GList。它们非常相似,因为都依赖于指针来从一个元素链接到下一个条目,或者,在 GList 中,链接到前一个条目。不过,有另外一类不使用链接的有序集合;它的功能与 C 数组多少有些类似。

它叫做 GArray,提供一个具备索引的单一类型的有序集合,能够为了容纳新条目而增加大小。

相对于链表,数组有什么优势?一方面,索引访问。也就是说,如果想获得数组中的第十五个元素,只需要调用一个能够在常数时间内获取它的函数;不需要手工地遍历到那个位置,那将是一个 O(n) 操作。数组知道自己的大小,所以查询其大小是一个 O(1) 操作而不是 O(n) 操作。


基本操作

这里是向数组添加和删除数据的一些主要方法:


//ex-garray-1.c
#include
int main(int argc, char** argv) {
 GArray* a = g_array_new(FALSE, FALSE, sizeof(ch

(2013-02-16 11:45)
标签:

it

分类: 数据库
BISON用于语法分析器的自动生成,这个工具可以在网上下载获得。 化点时间学习这个工具的用法,并用于SQL语言的分析,可以让我们把精力专注在语法规则上,而不是具体的分析函数编写上。对整个DBMS来说,使用自动化工具进行语言处理程序的自动生成,使得语言分析模块成为最可靠最方便维护的模块之一。
 
标签:

it

分类: 数据结构及算法

在算法设计中经常需要通过递归方程估计算法的时间复杂度T(n),本文针对形如T(n)=aT(n/b)+f(n)的递归方程进行讨论,以期望找出通用的递归方程的求解方式。

  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有