zoukankan      html  css  js  c++  java
  • 《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 ENGINESG;    //查看支持的存储引擎

      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存储引擎无优劣差异只有适合不适合。

      

    浓郁而清晰的活着
  • 相关阅读:
    CF 142B Tprimes
    CF 231A Team
    poj 2001 Shortest Prefixes ——字典树入门
    hdu 1039 Easier Done Than Said?
    poj 2528 Mayor's posters
    hdu 1061 Rightmost Digit
    poj 2503 Babelfish
    CF271 A. Beautiful Year
    poj 2752
    CF271 B. Prime Matrix
  • 原文地址:https://www.cnblogs.com/duxiaohe/p/7517567.html
Copyright © 2011-2022 走看看