《MySQL技术内幕InnoDB存储引擎》读书笔记 第一章

Mysql体系结构和存储引擎

1.1 定义数据库和实例

  数据库:物理操作系统文件或其他形式文件类型的集合。    数据库文件可以使frm,MYD,MYI,ibd结尾的文件。

  实例:MySQL数据库由后台线程以及一个共享内存区组成。    数据库实例才是真正用于操作数据库文件的。

  实例与数据库的关系通常是一一对应的,在集群情况下可能存在一个数据库被多个数据实例使用的情况。

  MySQL被设计为一个单进程多线程架构的数据库,这点与SQL Server比较类似,但与Oracle多进程的架构有所不同(Oracle的Windows版本也是单进程多线程的架构的)

  MySQL数据库实例在系统上的表现就是一个进程。

  Oracle 中如果没有参数文件,在启动实例时会提示找不到该参数文件,数据库启动失败。而在MySQL数据库中,可以没有配置文件,在这种情况下,MySQL会按照编译时的默认

参数设置启动实例。

  MySQL 数据库是按 /etc/my.cnf -->/etc/mysql/my.cnf-->/usr/local/mysql/etc/my.cnf-->~/.my.cnf 的顺序读取配置文件。如果几个配置文件中都有同一个参数,MySQL数据库以读取到的最后一个配置文件中的参数为准。  在Linux环境下,配置文件一般放在 /etc/my.cnf 下。在Windows平台下,配置文件的后缀名可能是.cnf,也可能是.ini。

  配置文件中有一个参数datadir,该参数指定了数据库所在的路径。在Linux操作系统下默认datadir为/usr/local/mysql/data

  可以用命令查看  mysql > SHOW VARIABLES LIKE ‘datadir’\G;

  

1.2 MySQL体系结构

  从概念上来说,数据库是文件的集合,是依照某种数据模型组织起来并存放于二级存储器中的数据集合;数据库实例时是程序,是位于用户与操作系统之间的一层数据管理软件,用户对数据库数据的任何操作,包括数据库定义、数据查询、数据维护、数据库运行控制等都是在数据库实例下进行的,应用程序只有通过数据库实例才能和数据库打交道。

  MySQL由以下几部分组成:

  连接池组件、管理服务和工具组件、SQL接口组件、查询分析器组件、优化器组件、缓冲组件、插件式存储引擎、物理文件。

  需要特别注意的是,存储引擎是基于表的,而不是数据库。

1.3 MySQL存储引擎

  1.3.1 InnoDB存储引擎

    InnoDB存储引擎支持事物,面向在线是事物处理(OLTP)的应用。其特点是行锁设计、支持外键,并支持类似于Oracle的非锁定读,即默认读取操作不会产生锁。

    从MySQL4.1(包括4.1)版本开始,InnoDB存储引擎的表单独存放到一个独立的ibd文件中。此外,InnoDB存储引擎支持用裸设备用来建立其表空间。

    如果没有显示地定义时指定主键,InnoDB存储引擎会为每一行生成一个6字节的ROWID,并以此作为主键。

   1.3.2 MyISAM存储引擎

    MyISAM存储引擎不支持事务、表锁设计,支持全文检索,主要面向一些OLAP数据库应用。在MySQL5.5.8版本之前MyISAM存储引擎是默认的存储引擎(除Windows版本外)。  MyISAM存储引擎的缓冲池只缓存索引文件,而不缓冲数据文件。

    MyISAM存储引擎表由MYD和MYI组成,MYD用来存放数据文件,MYI用来存放索引文件。 使用myisampack工具压缩后的表是只读的。

    在MySQL5.0版本之前,MyISAM默认支持的表大小为4GB, 5.0之后默认支持256TB的单表数据。

  1.3.3 NDB存储引擎

    NDB存储引擎是一个集群存储引擎 更高的可用性 数据全部放在内存中(5.1版本后 可以将非索引数据放在磁盘上) 是高可用、高性能的集群系统。

    NDB存储引擎的连接操作是在MySQL数据库层完成的,而不是在存储引擎层完成的。这意味着,复杂的连接操作需要巨大的网络开销,因此查询速度很慢。如果解决了这个问题,NDB存储引擎的市场应该非常巨大。

  1.3.4 Memory 存储引擎

    Memory 存储引擎(之前称为HEAP存储引擎)将表中的数据存放在内存中,如果数据重启或发生崩溃,表中的数据都将消失。

    不支持TEXT和BLOB列类型。

  1.3.5 Archive 存储引擎

    Archive存储引擎只支持INSERT和SELECT操作,从MySQL5.1开始支持索引。

    Archive存储引擎非常适合存储归档数据,如日志信息。Archive存储引擎使用行锁来实现高并发的插入操作,但其本身并不是事物安全的存储引擎,其设计目标主要是提供高速的插入和压缩功能。

  1.3.6 Federated存储引擎

    Federated存储引擎表并不存放数据,它只是指向一台远程数据库服务器上的表。

  1.3.7 Maria存储引擎

    可以看做是MyISAM的后续版本。Maria存储引擎的特点是:支持缓存数据和索引文件,应用了行锁设计,提供了MVCC功能,支持事物和非事务安全的选项,以及更好的BLOB字符类型的处理性能。

  mysql > SHOW ENGINES\G;    //查看支持的存储引擎

  1.5 连接MySQL

  连接MySQL操作是一个连接进程和MySQL数据库实例进行通信。 进程通信的方式有管道、命名管道、命名字、TCP/IP套接字、UNIX域套接字。

  TCP/IP是基于网络的,而套接字一般用于同一台服务器。

  例:

    TCP/IP :    C:\ > mysql -h 192.168.0.101 -u david -p

    UNIX域套接字: mysql -udavid -S  /tmp/mysql.sock

1.6 小结

  数据库和实例定义

  体系结构 进一步突出 实例和数据库

  MySQL插件式存储引擎

  MySQL存储引擎无优劣差异只有适合不适合。

  

时间: 2024-11-18 04:50:38

《MySQL技术内幕InnoDB存储引擎》读书笔记 第一章的相关文章

iOS 读书笔记 第一章

1.确定某个实例或类方法是否可用. 1)使用NSObject的类方法instancesRespondToSelector:来确定是否在该类的一个实例中存在一个特定的选择器. NSArray *array = @[@"1",@"2"]; if ([NSArray instancesRespondToSelector:@selector(sortUsingComparator:)]) { //do something use sortUsingComparator: }

《Java并发变成实践》读书笔记---第一章 简介

<Java并发编程实战>深入浅出地介绍了Java线程和并发,是一本完美的Java并发参考手册.书中从并发性和线程安全性的基本概念出发,介绍了如何使用类库提供的基本并发构建块,用于避免并发危险.构造线程安全的类及验证线程安全的规则,如何将小的线程安全类组合成更大的线程安全类,如何利用线程来提高并发应用程序的吞吐量,如何识别可并行执行的任务,如何提高单线程子系统的响应性,如何确保并发程序执行预期任务,如何提高并发代码的性能和可伸缩性等内容,最后介绍了一些高级主题,如显式锁.原子变量.非阻塞算法以及

《深入理解Java虚拟机》读书笔记---第一章 走进Java

一.为什么要读此书 <深入理解Java虚拟机>这本书读了很多次,每次读都会有不一样的感受.首先说一下为什么要读这本书,如果把Java比喻成乾坤大挪移,那了解虚拟机的工作原理就是练习九阳神功,java语言是招式,对虚拟机的认识是内功心法,只有内功心法强大,所使的招式才强大,这就是为什么阳顶天只能把乾坤大挪移练到第四层,而张无忌能练到第七层.由于java虚拟机的强大,把很多功能都隐藏了,例如内容管理,垃圾回收机制等,使得很多java程序猿对这一块的知识所有缺失,编码的时候也是似懂非懂的,以至于遇到

Apache Tomcat 7 读书笔记 - 第一章

Apache Tomcat 简介: 开源框架,下载地址:http://tomcat.apache.org/.可以嵌入独立的web应用,也可作为多个web应用的服务器. 基于Java的web应用服务器容器,能托管Servlet和Java Server Pages(JSP)的web应用.我们常用的J2EE框架,Spring MVC, Structs等,部署到Tomcat上去后,Tomcat会将其自动解析成Serlvet与JSP.在前后端开发完全分离的情况下(后台只提供接口,前端调用),不推荐使用原有

In-memory Computing with SAP HANA读书笔记 - 第一章:Basic concepts of in-memory

本文为In-memory Computing with SAP HANA on Lenovo X6 Systems第一章Basic concepts of in-memory computing的读书笔记. 作为基础概念,本章非常重要.此Redbook讲得浅显易懂,配图也容易理解.唯一需要深读是DL ACM的那篇论文,后续我会再补充. "卑之,毋甚高论,令今可行也", 本章正符合汉文帝对于张释之的要求. Basic concepts of in-memory computing In-

读书笔记 第一章

通过第一章的学习,我了解到了Android 是Google开发的基于Linux平台的开源手机操作系统.它包括操作系统.用户界面和应用程序以及移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍.Android采用WebKit浏览器引擎,具备触摸屏.高级图形显示和上网功能,用户能够在手机上查看电子邮件.搜索网址和观看视频节目等,比iPhone等其他手机更强调搜索功能,界面更强大,可以说是一种融入全部Web应用的单一平台. android的系统架构和其操作系统一样,采用了分层的

《算法导论》读书笔记--第一章

第一章 算法在计算中的作用 一.什么是算法?为什么算法值得研究?相对于计算机中使用的其他技术来说算法的作用是什么? 算法就是任何良定义的计算过程,该过程取某个值或者值的集合作为输入并产生某个值或者值的集合作为输出.这样算法就是把输入转换成输出的计算步骤的一个序列. 若对每个输入实例算法都以正确的输出停机,则称该算法是正确的,并称正确的算法解决了给定的计算问题.注意:不正确的算法只要其错误率可控时可能是有用的,但是我们通常只关心正确的算法. 数据结构是一种存储和组织数据的方式,旨在便于访问和修改.

《淘宝技术这十年》读书笔记——第一章 第二章

引言 ? ? 这本书的作者是子柳先生,子柳本名赵超,2004年加入淘宝网.历任开发工程师.项目经理.产品经理.测试经理,2009年随着淘宝系统的大规模重构和人才的迅速扩张,创办了"淘宝技术大学",因培养内外部工程师众多,人称"校长". ? ? 之所以读这本书,主要想了解淘宝的技术/业务发展过程中遇到过哪些问题,以及他们怎么解决的.在阅读的过程中有很多不懂的地方,主要是知识面确实涵盖的太广,就当拓展视野吧. ? ? 第一章 ? ? 淘宝架构初版 ? ? 淘宝的第一版源

《机器学习》读书笔记-第一章 引言

<Machine Learning>,作者Tom Mitchell,卡内基梅隆大学. 第一章 引言 1.1 学习问题的标准描述: 机器学习的定义: 如果一个计算机程序针对某类任务T的用P衡量的性能根据经验E来自我完善, 那么我们称这个计算机程序在从E中学习,针对某类任务T,它的性能用P来衡量. 例子: 对于学习下西洋跳棋的计算机程序,它可以通过和自己下棋获取经验: 它的任务是参与西洋跳棋对弈: 它的性能用它赢棋的能力来衡量. 学习问题的三个特征: 任务的种类, 衡量性能提高的标准, 经验的来源

Android深度探索读书笔记 第一章

第一章首先介绍android系统架构(android是一个非常优秀的嵌入式操作系统),总共分为四层:第一层Linux内核,由于android是基于Linux内核的,所以android跟其他Linux系统没什么差异.这一层这一层主要包括Linux的驱动程序以及内存管理.进程管理.电源管理等.第二层编写的代码库,也包括Dalivk虚拟机的运行时.第三层android SDK 层.第四层应用程序(相当于android的UI).而这一层主要靠第三层中的Android SDK API 完成各种功能.其次介