引言

由于之前的工作对Mysql应用不多,感觉需要补充下这方面的知识。
对MySQL的了解只是简单的CRUD操作,甚至对于case when的用法以及Date类型和Timestamp类型的区别都忘了,
因此开启这个读书笔记系列。

Mysql数据库的体系结构

MySQL数据库由以下几部分组成:

  • 连接池组件(Connection Pool)。
  • 管理服务和工具组件(Management Services&Utilities)。
  • SQL接口组件(SQL Interface)。
  • 查询分析器组件(Parser)。
  • 优化器组件(Optimizer)。
  • 缓冲组件(Caches&Buffers)。
  • 插件式存储引擎(Pluggable Storage Engines)。
  • 物理文件(File system)

存储引擎

其中存储引擎主要有:InnoDB、MyISAM等

InnoDB存储引擎:支持事务。其设计目标主要面向OLTP(见下一小节的分析)的应用。
其特点是行锁设计、支持外键,并支持类似
Oracle的非锁定读,即默认读取操作不会产生锁。从MySQL 5.5.8版
本开始是默认的存储引擎。

对于表中数据的存储,InnoDB存储引擎采用了聚集(clustered)
的方式,每张表都是按主键的顺序进行存储的,如果没有显式地在表
定义时指定主键,InnoDB存储引擎会为每一行生成一个6字节的
ROWID,并以此作为主键。

MyISAM存储引擎:不支持事务、表锁设计、支持全文索引。主
要面向一些OLAP数据库应用。在MySQL 5.5.8版本之前是默认的存储引擎。
此外,MyISAM存储引擎的另一个与众不同的地方
是,它的缓冲池只缓存(cache)索引文件,而不缓存数据文件,这
与大多数的数据库都不相同。

NDB存储引擎:NDB存储引擎是一个集群存储引擎,其结构是share nothing的集群架构,
能提供高级别的高可用性。NDB存储引擎的特点是数据全部放在内存中(从5.1版本开
始,可以将非索引数据放在磁盘上),因此主键查找(primary key
lookups)的速度极快,并且能够在线添加NDB数据存储节点(data
node)以便线性地提高数据库性能。由此可见,NDB存储引擎是
高可用、高性能、高可扩展性的数据库集群系统,其面向的也是OLTP的
数据库应用类型。

Memory存储引擎:正如其名,Memory存储引擎中的数据都存放
在内存中,数据库重启或发生崩溃,表中的数据都将消失。它非常适
合于存储OLTP数据库应用中临时数据的临时表,也可以作为OLAP
数据库应用中数据仓库的维度表。Memory存储引擎默认使用哈希索
引,而不是通常熟悉的B+树索引。

Infobright存储引擎:第三方的存储引擎。其特点是存储是按照列
而非行的,因此非常适合OLAP的数据库应用。

OLTP与OLAP的比较

OLTP主要执行基本的、日常的事务处理,比如在银行存取一笔
款,就是一个事务交易。OLTP的特点一般有:
实时性要求高。
查询的数据量不是很大。
交易一般是确定的,所以OLTP是对确定性的数据进行存取。
并发性要求高,并且严格要求事务的完整性、安全性

OLAP是数据仓库系统的主要应用,其典型的应用就是复杂的动
态报表系统。OLAP的特点一般有:
实时性要求不是很高,很多应用最多每天更新一次数据。
数据量大。因为OLAP支持的是动态查询,用户要通过对很多数
据的统计才能得到想要知道的信息,如时间序列分析等,所以处理的
数据量很大。
因为重点在于决策支持,所以查询一般是动态的,也就是说允许
用户随时提出查询的要求。因此,在OLAP中通过一个重要概
念“维”来搭建一个动态查询的平台(或技术),供用户自己决定需要
知道的信息。

感觉OLAP更适合于做数据仓库

《MySQL技术内幕(SQL编程)》——基础相关推荐

  1. MySQL技术内幕-InnoDB存储引擎第2版-学习笔记-02

    MySQL技术内幕-InnoDB存储引擎第2版-学习笔记-02 6. 锁 ​ 人们认为行级锁总会增加开销.实际上,只有当实现本身会增加开销时,行级锁才会增加开销.InnoDB 存储引擎不需要锁升级,因 ...

  2. 读书笔记之MySQL技术内幕

    前言 本文内容基本摘抄自<MySQL技术内幕 InnoDB存储引擎>,以供复习之用,没有多少参考价值.想要更详细了解请参考原书. 第一章.MySQL体系结构和存储引擎 数据库是物理操作系统 ...

  3. 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(上)

    索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 一.SQL Server体系结构 1.1 数据库 ...

  4. MySQL技术内幕-InnoDB存储引擎第2版-学习笔记-01

    MySQL技术内幕-InnoDB存储引擎第2版-学习笔记-01 1. MySQL体系结构和存储引擎 1.1 定义数据库和实例 数据库database: 物理操作系统文件或其他形式文件类型的集合. 当使 ...

  5. mysql技术内幕sampdb_MySQL技术内幕汇总

    MySql技术内幕之MySQL入门(1) 检查系统中是否已经安装了MySQL sudo netstat -tap | grep mysql 若没有显示已安装结果,则没有安装.否则表示已经安装. sud ...

  6. mysql技术内幕sampdb_MySql技术内幕之MySQL入门(1)

    MySql技术内幕之MySQL入门(1) 安装 检查系统中是否已经安装了MySQL sudo netstat -tap | grep mysql 若没有显示已安装结果,则没有安装.否则表示已经安装. ...

  7. Mysql技术内幕InnoDB存储引擎——InnoDB存储引擎

    特此申明: 前段时间找工作所以看了<Mysql技术内幕InnoDB存储引擎>,整理的时候除了参考网上已有的笔记贴,加上自己整合的,可能和别人有雷同之处.不过无所谓啦,写出来自己看看,需要的 ...

  8. 视频教程-赵强老师:Oracle数据库从10g到11g(4)PL/SQL编程基础-Oracle

    赵强老师:Oracle数据库从10g到11g(4)PL/SQL编程基础 毕业于清华大学,拥有超过13年的工作经验. Oracle认证讲师,拥有6年以上授课经验.精通Oracle数据库.中间(Weblo ...

  9. MySQL技术内幕 InnoDB存储引擎:锁问题(脏读、不可重复读)

    1.脏读 在理解脏读(Dirty Read)之前,需要理解脏数据的概念.但是脏数据和之前所介绍的脏页完全是两种不同的概念.脏页指的是在缓冲池中已经被修改的页,但是还没有刷新到磁盘中,即数据库实例内存中 ...

  10. MySQL必知必会教程:深入理解MySQL技术内幕

    2019独角兽企业重金招聘Python工程师标准>>> MySQL必知必会教程:深入理解MySQL技术内幕 作为最流行的开源数据库软件之一,MySQL数据库软件已经是广为人知了.当前 ...

最新文章

  1. CTC损失函数 Transformer用的
  2. 分布式数据库管理系统
  3. JavaScript 技术篇-js获取document的几种方式,js获取dom元素的常用方法。
  4. 每周分享第8期(2019.5.25)
  5. 将pcre、zlib等包编译进nginx里去(转)
  6. java多线程创建runnable_Java线程池和runnables创建runnables
  7. eclipse导入Java源码
  8. (原創) 這學期C++完美的Ending (C/C++) (日記)
  9. You Don't Have To Say Goodbye
  10. oracle补丁冲突解决方法,【学习笔记】Oracle RAC升级安装patch补丁的问题和解决办法...
  11. 用PHPphpstudy写一个可以登录的简单网页
  12. 基于物联网技术的校园智慧消防管理平台-Susie 周
  13. element-ui表格的滚动条样式修改(当固定table表格高度时默认滚动条样式太丑)
  14. 超百万观众同场看直播流畅不卡顿,快手如何做到的?|首次披露
  15. 使用redis的setnx可以非同一线程进行加锁和解锁(附源码)
  16. kodi linux版本,Linux下安装多媒体中心 Kodi 18.8 新版本并设置中文界面
  17. Excel中建立数据透视表,想用计算字段功能,但是该选项灰色无法点击,怎么办?
  18. DataStream API:Overview
  19. 不在数组里的最小正整数
  20. 秒杀系统,架构与优化细节

热门文章

  1. 【linux】一次性杀死多个同名进程
  2. 阻止brew自动更新
  3. zip4j实现文件压缩与解压缩 common-compress压缩与解压缩
  4. HAOI2018 简要题解
  5. WebServce之拦截器
  6. Java——can U do
  7. 浅析Thinkphp框架中运用phprpc扩展模式
  8. [COURSE_PTHE] 12. 黑盒网络服务器
  9. Debian Mysql stop 问题
  10. C/C++编程语言中指针(pointer)介绍