我们知道,数据是信息的载体——一种我们约定了如何解释的符号。在计算机系统中,最常见的应该是文本数据。我们用它记录配置信息,写日志,等等。而在应用程序中,按一定的数据结构来组织数据的方式叫做数据库管理系统(DBMS)。数据库就是把数据按照一定的规则,有效的组织存放,以提供更高效、更便捷的数据访问和处理。要理解数据库原理,并使用数据库,需要理解三点内容:1>数据库的数据组织的方式;2>数据库的逻辑架构及物理实现;3>数据库客户端的操作方法。也许,对于使用数据库来说,只需要掌握最后一点,即操作方法就可以了。但是,一个只能掌握具体操作,而无法理解领会为何要这么操作,及这些操作是为何操作的人,不过是个熟练的技术工。因为具体的操作,是一项技能,是“术”的层面的东西;而原理是“道”的层面的东西。一门技术,可能兴盛,也可能被淘汰,但原理是不会过时和被淘汰的。比如,8086处理器的指令,可以多数已经过时了,但是它的设计思想,确实永远不会过时的。

  先说说数据库的数据结构。我们日常所用的文本文件,是按字节顺序存储的。要找到一个文本中的某些特定的信息,必须通过文本流的方式,从头到尾一字节一字节的将文本扫描。这种效率,平时写写脚本,理解练习I/O原理是可以的。但实际应用中,显然是不现实的。比如腾讯的几亿人的QQ号的数据,要是使用纯文本来存储,每个人登录时,岂不是都要将整个文件扫描一次?

  在数据库中,用到的数据结构是——B-Tree。要了解B-Tree,我们先来了解一些二叉查找树(Binary Search Tree)。二叉查找树是一种查找高效的数据结构。二叉查找树有三个特点:1>每个节点最多只有两个子树;2>左子树的值总是小于父节点,右子树的值总是大于父节点;3>在二叉查找树中找到一个数据,平均只需要logN次比较。

                                         图1——二叉查找树

  但是二叉查找树因为每一层最多只能有两个节点,大量的数据存放会导致层次太深。而数据的实际存放是通过文件系统存储在硬盘上的。我们知道,硬盘这个I/O外设的访问速度和内存的速度比起来,差的可是N多数量级啊。所以,访问硬盘的次数越少越好。而二叉查找树的过深的层次结构导致访问硬盘的次数剧增。所以,才有了B-Tree这个数据结构,用以组织数据库中的数据。B-Tree也有三个特点:1>一个节点可以容纳多个值;2>除非本层数据已经填满,否则不会开辟新的层;3>子节点中的值,与父节点中的值,有严格的大小对应关系。如下图:

                                       图2——B-Tree

  因此,当使用B-Tree时,只需要2层就可以实现1万的数据存储。而使用二叉查找树则需要10层。同时,B-Tree具备二叉查找树的高效查找特性。当进行查找操作时,使用B树只需2次读取硬盘进行比较就可以了。而使用二叉查找树则需要10次读取硬盘进行比较。所以,B树的效率更高。

  说了数据库的数据结构,在说说后面两个内容。以用得比较广泛的LAMP开源轻架构中的MySQL为例,说说MySQL的逻辑结构。MySQL由Client和Server构成,是典型的C/S架构。1>在实际应用中,充当Client通常是第三方应用(Python, PHP, Perl等)中的MySQL驱动。2>与Client通信的部分叫做连接池(connection pool),主要负责“Client”与Server的连接以及验证等。以本地socket通信和TCP/IP通信实现连接与验证。3>然后是核心层,负责提供SQL接口和查询缓存,以及查询的优化和部分内部函数的执行。4>再后是存储引擎层,真正负责数据的存储和提取。有多种存储引擎,提供不同的功能。5>最后是数据存储层,真正把数据存储在文件系统中。

  MySQL快速入门的使用教程可以参考《21分钟MySQL入门教程》 。

转载请注明地址:<http://www.cnblogs.com/qiuyi116/p/4349233.html>

MySQL数据库原理的更多相关文章

  1. 【转】MySQL数据库原理

    原文地址:http://www.cnblogs.com/qiuyi116/p/4349233.html 我们知道,数据是信息的载体——一种我们约定了如何解释的符号.在计算机系统中,最常见的应该是文本数 ...

  2. zabbix利用自带的模板监控mysql数据库

    zabbix利用自带的模板监控mysql数据库 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 有些东西你不会的时候觉得它特别难,但是当你去做的时候就发现如此的简单~zabbix功能 ...

  3. Xtrabackup原理及使用innobackupex进行MySQL数据库备份恢复

    Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具. Xtrabackup中主要包含两个工 ...

  4. 使用Memcache缓存mysql数据库操作的原理和缓存过程浅析

    转载自脚本之家 http://www.jb51.net/article/51831.htm  作者:忙碌的松鼠 对于大型网站如facebook,ebay等网站,如果没有Memcache做为中间缓存层, ...

  5. 烂泥:学习mysql数据库主从同步复制原理

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 说明本篇文章部分转载自互联网. MySQL的Replication(英文为复制)是一个多MySQL数据库做主从同步的方案,特点是异步复制,广泛用在各种对 ...

  6. MySQL数据库InnoDB存储引擎多版本控制(MVCC)实现原理分析

    文/何登成 导读:   来自网易研究院的MySQL内核技术研究人何登成,把MySQL数据库InnoDB存储引擎的多版本控制(简称:MVCC)实现原理,做了深入的研究与详细的文字图表分析,方便大家理解I ...

  7. MySQL执行原理,逻辑分层、更改数据库处理引擎

    MySQL执行原理,逻辑分层.更改数据库处理引擎 作者:Stanley 罗昊 [转载请注明出处和署名,谢谢!] 用了那么长时间的MySQL,sql语句相信早已烂熟于心,于是,我就试着去了解它的执行原理 ...

  8. mysql数据库主从同步复制原理

    MySQL的Replication(英文为复制)是一个多MySQL数据库做主从同步的方案,特点是异步复制,广泛用在各种对MySQL有更高性能.更高可靠性要求的场合.与之对应的是另一个同步技术是MySQ ...

  9. 重新学习MySQL数据库5:根据MySQL索引原理进行分析与优化

    重新学习MySQL数据库5:根据MySQL索引原理进行分析与优化 一:Mysql原理与慢查询 MySQL凭借着出色的性能.低廉的成本.丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库.虽然性能 ...

随机推荐

  1. XI.spring的点点滴滴--IObjectFactoryPostProcessor(工厂后处理器)

    承接上文 IObjectFactoryPostProcessor(工厂后处理器)) 前提是实现接口的对象注册给当前容器 直接继承的对象调用这个postProcessBeanFactory方法,参数为工 ...

  2. JavaScript----this陷阱的最全收集

    原文翻译: JavaScript来自一门健全的语言,所以你可能觉得JavaScript中的this和其他面向对象的语言如java的this一样,是指存储在实例属性中的值.事实并非如此,在JavaScr ...

  3. 国外一些好用的UX/UI设计工具和资源分享

    国外一些好用的UX/UI设计工具和资源分享 你今天使用的设计工具也许不再适合以后的网页和APP设计项目了.新的工具不断的推出市场,目标只有一个,让你的工作更快.更容易而且工作成效更好.今天分享的这些U ...

  4. 超详细单机版搭建hadoop环境图文解析

    前言: 年前,在老大的号召下,我们纠集了一帮人搞起了hadoop,并为其取了个响亮的口号“云在手,跟我走”.大家几乎从零开始,中途不知遇到多少问题,但终 于在回家之前搭起了一个拥有12台服务器的集群, ...

  5. ioc容器

    对于容器而言需要满足两个方面: 1.全局唯一 2.无论何地都可以进行对容器的访问 对于Spring而言,BeanFactory则就是这样的容器,只不过它过于底层.在我们的日常开发中还是使用Applic ...

  6. Java编程思想第四版*第七章*个人练习

    欢迎加群:239063848 成团的笔记:该组仅用于技术共享和交流,问题和答案公布 潘基聊天.禁止广告.禁止招聘-- 练习1:(2)创建一个简单的类.第二个类中,将一个引用定义为第一个类的对象.运用惰 ...

  7. BLE 广播数据解析

    从上一篇GATT Profile 简介中提到过,BLE 设备工作的第一步就是向外广播数据.广播数据中带有设备相关的信息.本文主要说一下 BLE 的广播中的数据的规范以及广播包的解析. 广播模式 BLE ...

  8. 高质量CSS编写规范

    ①id和class的命名在保持语义性的同时尽可能的短.不推荐的写法:#navigation {} .atr {}推荐的写法  : #nav {} .author {}可以缩写单词,但缩写后务必能让人明 ...

  9. Enable SPI 1.0 and 1.1 with device tre overlays on BeagleBone

    For most people the above image means absolutely nothing, but for that one guy that has been searchi ...

  10. 如何在 Objective-C 的环境下实现 defer

    关注仓库,及时获得更新:https://github.com/draveness/iOS-Source-Code-Analyze Follow: https://github.com/Dravenes ...