MySQL 技术 内幕: InnoDB存储引擎——读书笔记(一)
来源:互联网 发布:python循环 编辑:程序博客网 时间:2024/06/05 18:27
1.1 数据库及实例
数据库:文件的集合,用于存放数据、日志、错误日志等信息的OS文件或者其他形式文件的集合。
实例:由数据库后台进程/线程以及一个共享内存区组成,是应用程序,位于用户与OS之间的运行的管理软件。
MySQL中,一般情况下,数据库与实例是一一对应的,但在集群环境中则是一对多的关系。
MySQL属于单进程多线程架构的DB。在启动时,MySQL会读取配置文件,根据配置文件的参数启动数据库实例,读取顺序为:/etc/my.cnf -> /etc/mysql/my.cnf -> /usr/local/mysql/etc/my.cnf -> /.my.cnf。若依然没有找到配置文件,MySQL会按照编译时的参数设置启动实例。
1.2MySQL体系结构及主要存储引擎
主要由:连接池组件、管理服务和工具组件、SQL接口组件、查询分析器组件、优化器组件、缓冲组件、插入式存储引擎以及物理存储文件组成。
插件式存储引擎是底层物理结构的实现,负责为数据库执行实际的数据I/O操作,并能允许和强制执行面向特殊应用需求的特定特性集合。各存储引擎适应不同的环境,且都是基于表的,因此唯有充分理解特定应用需求和掌握各存储引擎的特点,方能提高系统的性能。
- InnoDB(后面的笔记重点介绍,此处略过)
- MyISAM:只缓存其索引文件,数据库文件的缓存由OS本身完成。包括MYD和MYI文件。可通过myisampack来压缩/解压数据文件(霍夫曼编码静态算法压缩),压缩后表是只读的。
- NDB:集群存储引擎,share nothing集群架构,其数据全部放入内存,主键查找速度很快。NDB中的JOIN操作是在MySQL数据库层完成的,而非存储引擎;复杂的连接操作会需要巨大的网络开销。
- Memory:将表中数据放入内存,易失,采用哈希索引。使用时,有些限制:只支持表锁,并发性能较差;不支持TEXT和BLOB类型;以定长空间存varchar。(注:MysQL使用Memory存储引擎作为临时表来存放SELECT的中间结果集。若结果集超过Memory存储引擎表的容量设置,或含有TEXT或BLOB类型,MySQL会将其转换为MyISAM存储引擎表而存放到磁盘。又因MyISAM不缓存数据文件,因此这时产生的临时表的性能对于查询会有损失。)
- Archive:只支持INSERT和SELECT操作,可使用zlib算法进行压缩存储。
1.3MySQL连接方式
- TCP/IP:基于网络的连接。连接时,会进行权限检查。
- 命名管道和共享内存:Windows系统,同一服务器上的两进程可通过命名管道连接。MySQL用此方式,需在配置文件中启用--enable-named-pipe选项;要使用共享内存方式,需在my.cnf中添加--shared-memory,同时客户端使用--protocol=memory选项。
- Unix套接字:客户端与服务端位于同一服务器时才可使用。在my.cnf中指定:-socket=/tmp/mysql.sock,连接时指定:./mysql -S /tmp/mysql.sock。
附言:
该书讲解了InnoDB存储引擎的体系结构和工作原理,包括了InnoDB表的存储结构、数据页结构、分区表的种类、索引及算法、锁、事务等内容,并结合InnoDB的源代码讲解了其内部实现机制。
前言中作者的几个观点颇有道理,遂摘录如下:
- 任何时候WHY都比WHAT重要。
- 不要相信任何“神话”,学会自己思考
- 不要墨守成规,大部分人都知道的事情可能是错误的
- 不要相信网上的传言,去测试,根据自己的实践做出决定
- 花时间充分思考,敢于提出质疑
注:如若涉及版权或者其他问题,请联系本人。
- MySQL技术内幕-InnoDB存储引擎-读书笔记(一)
- MySQL 技术 内幕: InnoDB存储引擎——读书笔记(一)
- 读书笔记 —— 《MySQL技术内幕 InnoDB存储引擎》
- 《MySQL技术内幕——InnoDB存储引擎》读书笔记(二)——InnoDB存储引擎
- InnoDB存储引擎redo log文件——《MySQL技术内幕InnoDB存储引擎》读书笔记
- 《MySQL技术内幕——InnoDB存储引擎》读书笔记(一)——MySQL体系结构和存储引擎
- MySQL技术内幕InnoDB存储引擎 读书笔记
- 《MySQL技术内幕--InnoDB存储引擎》读书笔记
- MySQL 技术内幕: InnoDB存储引擎——读书笔记(二)
- MySQL技术内幕:InnoDB存储引擎读书笔记(中)
- MySQL技术内幕:InnoDB存储引擎读书笔记(上)
- MySQL技术内幕:InnoDB存储引擎读书笔记(下)
- MySQL技术内幕:InnoDB存储引擎读书笔记(上)
- MySQL技术内幕:InnoDB存储引擎读书笔记(中)
- MySQL技术内幕:InnoDB存储引擎读书笔记(下)
- [DB] MySQL技术内幕:InnoDB存储引擎读书笔记(上)
- [DB] MySQL技术内幕:InnoDB存储引擎读书笔记(中)
- [DB] MySQL技术内幕:InnoDB存储引擎读书笔记(下)
- 解决EF CTP5 数据库表名变为复数问题
- bboosgroups论坛访问地址:http://www.xtzy.com:800
- 自考报名_去考华师大的电子商务
- MySQL 技术内幕: InnoDB存储引擎——读书笔记(二)
- 5种方法解除开机密码
- MySQL 技术 内幕: InnoDB存储引擎——读书笔记(一)
- NMAKE: fatal error U1065
- URL encode C 实现
- 关于ToonShader on iOS
- java学习二则,发现个算法问题,请教各位大牛
- Python 发送 RMAN 备份 Log 脚本
- 详解Django 简介及安装教程手册-示例
- 大家好
- 从事十年开发软件工程师对职业理解