代码改变世界

随笔档案-2011年08月

Mysql源码学习——用户认证原理与实现

2011-08-30 20:48 by 心中无码, 2545 阅读, 收藏, 编辑
摘要: 前几节跟踪了Connection Manager和Thread Manager,在连接的过程中,还有一个身份认证的过程,就是大家所熟悉的 验证用户名和密码的过程,我们平时做一个系统的时候,很多时候都会涉及到身份验证。今天我们就来看下Mysql是如何进 行验证的。(注意是登录,不是登陆^_^) 阅读全文

Mysql源码学习——Thread Manager

2011-08-27 15:18 by 心中无码, 1976 阅读, 收藏, 编辑
摘要: 为了提高系统效率,减少频繁创建线程和中止线程的系统消耗,Mysql使用了线程缓冲区的概念,即如果 一个连接断开,则并不销毁承载其的线程,而是将此线程放入线程缓冲区,并处于挂起状态,当下一个新的Connection到来 时,首先去线程缓冲区去查找是否有空闲的线程,如果有,则使用之,如果没有则新建线程。本问主要介绍这个线程缓冲区, 首先介绍下基本的概念 阅读全文

Mysql源码学习——Connection Manager

2011-08-21 13:15 by 心中无码, 2557 阅读, 收藏, 编辑
摘要: 1.连接的线程数 Mysql支持单线程和多线程两种连接线程数。如果是单线程,则在同一时刻,只能有一个connection连接到Mysql,其他的连接会被挂起。如果是多线程,则同一时刻可以支持多个connection同时连接到服务器。 可以通过设置服务器的启动参数来设定连接的线程数:mysqld.exe --thread-handling=no-threadsmysqld.exe --thread-handling=one-thread-per-connection 服务器如何通过参数来选择使用哪种方式的呢?且看服务器中的分支代码:#ifdef EMBEDDED_LIBRARY one_th.. 阅读全文

自旋锁SPIN LOCK的编程实现

2011-08-19 18:47 by 心中无码, 1572 阅读, 收藏, 编辑
摘要: 自旋锁是一种轻量级的互斥量,以达到对共享资源的保护。 阅读全文

Mysql源码学习——八度空间

2011-08-15 22:24 by 心中无码, 2726 阅读, 收藏, 编辑
摘要: 学习完词法分析和语法分析后,开始进入Mysql源码的正式学习之旅了。这么多模块,肿么入手呢?!还好从网上搜到了一个模块划分,以后就尽可能根据这个模块划分一步一步的跟踪源码,揭开Mysql的面纱。 我们从上至下来看各个模块的划分,首先客户端发送请求与服务器连接,通过connection manager模块,连接管理模块会调用Thread Manager模块,即线程管理模块,这里会为一个连接创建一个新的线程,专门为这个连接服务,这就保证了每个连接都有一个独立的线程为之工作,当然连接数一般也会有个限制,不然无限制的创建新的线程,操作系统也顶不住啊。接着进入了User Module,用户模块,这个模. 阅读全文

Mysql源码学习——源码目录结构

2011-08-12 10:08 by 心中无码, 3691 阅读, 收藏, 编辑
摘要: Mysql源码结构 阅读全文

Mysql源码学习——打造专属语法

2011-08-09 21:11 by 心中无码, 3536 阅读, 收藏, 编辑
摘要: 接触过SQL语句的人都会看过这家或者那家的SQL手册,其语法标准应该是从SQL92开始吧,在看SQL92标准的时候,你会发现里面定义的都是一些巴科斯范式(BNF),就是一种语法定义的标准。不管是牛X哄哄的ORACLE,还是不幸被其收购的Mysql,都会遵循里面的标准语法,当然一些扩展的语法除外,比如今天我们就会扩展一个简单的语法^-^。 阅读全文

Mysql源码学习——词法分析MYSQLlex

2011-08-03 22:23 by 心中无码, 4895 阅读, 收藏, 编辑
摘要: 客户端向服务器发送过来SQL语句后,服务器首先要进行词法分析,而后进行语法分析,语义分析,构造执行树,生成执行计划。词法分析是第一阶段,虽然在理解Mysql实现上意义不是很大,但作为基础还是学习下比较好。词法分析即将输入的语句进行分词(token),解析出每个token的意义。 阅读全文
点击右上角即可分享
微信分享提示