代码改变世界

How to use NoSQL in MySQL

2012-11-21 16:19 by 心中无码, 586 阅读, 0 推荐, 收藏, 编辑
摘要:How to use NoSQL in MySQL?Louis Hust1 IntroductionMySQL5.6 has already supported memcached, so we can say MySQL is a mixture of RDBMS and NoSQL. But there is few materials about how to install memcached in MySQL and how to use it, and that is the reason i write this article. In this article, i will 阅读全文

你真的了解如何登录MySQL么?

2012-07-21 15:59 by 心中无码, 3358 阅读, 5 推荐, 收藏, 编辑
摘要:昨天同事碰到一个问题,在MySQL上创建了一个用户,host设置为%,本地竟然无法登录。创建一个host为localhost的同名用户后,本地可以登录。感脚很怪异,下面我们重新分析产生这个问题的原因。1. 现场重现*root本地登录Shell>./mysql -urootWelcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 7Server version: 5.5.17-debug-log Source distributionCopyright (c) 2000, 2011 阅读全文

CSDN密码库窥视各大数据库性能

2011-12-26 17:30 by 心中无码, 7076 阅读, 8 推荐, 收藏, 编辑
摘要:很多同学一直抱怨手头木有一个真实的数据库,无法进行数据库性能试验,CSDN得知了同学们的苦恼,立刻开放了部分数据库,供同学们学习、参考,对CSDN这种大公无私、舍己为人的行为,有关部门对此进行了高度的赞扬,下面就带领同学们来进行一个小小的性能对比测试。 实验选择了三个数据库:Oracle11g、MySQL5.1以及DM7。Oracle作为商业数据库大哥大的代表,MySQL作为开源数据库的代表,DM7很多同学估计就不清楚了(达梦数据库),暂时作为国产数据库的代表吧(同学们轻拍^_^)。测试环境OSWINDOWS XP SP3CPUIntel i3 530 @2.93GHzMEMORY4GORAC 阅读全文

MySQL源码学习——MDL字典锁

2011-12-15 22:34 by 心中无码, 3171 阅读, 8 推荐, 收藏, 编辑
摘要:什么是MDL MDL,Meta Data lock,元数据锁,一般称为字典锁。字典锁与数据锁相对应。字典锁是为了保护数据对象被改变,一般是一些DDL会对字典对象改变,如两个TX,TX1先查询表,然后TX2试图DROP,字典锁就会lock住TX2,知道TX1结束(提交或回滚)。数据锁是保护表中的数据,如两个TX同时更新一行时,先得到row lock的TX会先执行,后者只能等待。MDL的设计目标字典锁在设计的时候是为了数据库对象的元数据。到达以下3个目的。1. 提供对并发访问内存中字典对象缓存(table definatin cache,TDC)的保护。这是系统的内部要求。2. 确保DML的并发性 阅读全文

MySQL源码学习——DBUG调试

2011-12-12 22:10 by 心中无码, 2987 阅读, 2 推荐, 收藏, 编辑
摘要:一、前言 在规模稍微大点的项目中,为了方便快速找到bug的所在,我们往往需要在代码中加入一些调试用的代码,比如加入一些printf,打印出一些重点的信息;加入assert,进行断言判断。这些比较随意的调试代码会使整个系统显得比较凌乱。于是Fred Fish开发了一套用于嵌入代码中的库,开发人员只需要调用相应的函数即可加入调试信息。 对于MySQL这种多线程的程... 阅读全文

Mysql源码学习——没那么简单的Hash

2011-10-14 21:08 by 心中无码, 2705 阅读, 1 推荐, 收藏, 编辑
摘要:Hash链表的应用比较常见,其目的就是为了将不同的值映射到不同的位置,查找的时候直接找到相应的位置,而不需要传统的顺序遍历或是二分查找,从而达到减少查询时间的目的。常规的hash是预定义一定的桶... 阅读全文

Oracle的聚簇也Hold不住了

2011-09-23 21:47 by 心中无码, 2025 阅读, 0 推荐, 收藏, 编辑
摘要:这两天在研究Oracle的Cluster,这里的Cluster不是聚簇索引的意思。Cluster是Oracle特有的一种数据存储方式,即把相关的数据存储在同一个数据块上,如果一组表有一些共同的列,则将这样的一些表存储在相同的数据块上,这样对于主外键这种连接操作,会起到减少I/O的作用。 Oracle支持两种方式的Cluster,即Index Cluster和Hash ... 阅读全文

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

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

Mysql源码学习——Thread Manager

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

Mysql源码学习——Connection Manager

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