2015年5月31日
摘要: 1、业务服务器进程中包含多个线程,每个线程处理的业务不一样,master负责请求的转发,slave负责具体的事情,订阅线程负责把数据通知给订阅者。2、这些线程都有数据库操作的业务,不同线程之间的数据库操作,操作的数据不一样,如何不阻塞呢? 建立一个db类,每个线程包含db对象,都与数据库建立一个连... 阅读全文
posted @ 2015-05-31 17:15 Andy Niu 阅读(675) 评论(0) 推荐(0) 编辑
摘要: 1、业务服务器是一主多从,负载均衡。2、对于客户端的请求,负载均衡的模式是NAT(Netwotk Address Translation),网络地址转换模式,和linux中LVS的NAT道理一样。客户端只向Master进程发请求,Master根据负载均衡算法,找出哪个Slave负责,发给对应的Sla... 阅读全文
posted @ 2015-05-31 17:01 Andy Niu 阅读(543) 评论(0) 推荐(0) 编辑
摘要: 1、客户端发送一个请求给服务器。2、服务器先检查查询缓存,命中了缓存,直接返回缓存中的数据,否则进入下一个阶段。3、服务器进行sql解析,预处理,再由优化器生成对应的执行计划。4、mysql根据执行计划,调用存储引擎的API来执行查询5、将结果返回给客户端。 阅读全文
posted @ 2015-05-31 16:31 Andy Niu 阅读(354) 评论(0) 推荐(0) 编辑
摘要: 1、mysql是基于网络的客户端/服务器架构,服务器上层是连接线程,解析器,查询缓存,下层是存储引擎。2、每个客户端连接,服务器都有一个对应的线程,这个线程只为这个连接查询服务,高版本的mysql支持线程池,使用少量的线程服务大量的连接。3、服务器收到请求,会解析查询,建立解析树,然后对其优化,包括... 阅读全文
posted @ 2015-05-31 16:07 Andy Niu 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 1、多个线程同时修改数据,存在数据不一致的情况,也就是并发控制的问题。2、mysql提供读锁和写锁,读锁之上可以再加读锁,不能加写锁,而写锁之上不能加任何锁。也就是说,读锁是共享的,写锁是排他的。3、锁粒度,为了更好的并发控制,锁的粒度应该尽可能小,也就是只锁定修改的数据。但是,锁本身也有一定的开销... 阅读全文
posted @ 2015-05-31 15:54 Andy Niu 阅读(10422) 评论(0) 推荐(0) 编辑