MySQL技术内幕 InnoDB存储引擎【一】
MySQL体系结构和存储引擎
1、数据库、实例的概念
数据库:物理操作系统文件或其它形式文件类型的集合
实例:MySQL数据库由后台线程以及一个共享内存区组成。共享内存区可以被运行的后台线程所共享。数据库实例才是真正用于操作数据库文件的。
在MySQL数据库中,实例与数据库的关系通常是一一对应的,即一个实例对应一个数据库,一个数据库对应一个实例。但是,在集群情况下可能存在一个数据库被多个数据实例使用的情况。
MySQL被设计为一个但进程多线程架构的数据库,MySQL数据库实例在系统上的表现就是一个进程。
./mysqld_safe& 启动mysql数据库实例
ps -ef | grep mysqld 查看数据库启动后的进程情况
当启动实例时,MySQL数据库会去读取配置文件,根据配置文件的参数来启动数据库实例,在mysql数据库中,可以没有配置文件,这种情况下,mysql会按照编译时的默认参数设置启动实例。
mysql --help | grep my.cnf mysql数据库实例启动时,会在哪些位置查找配置文件。【如果几个配置文件有相同的参数,以读取到的最后一个配置文件的参数为准】
配置文件中有一个参数datadir,该参数指定了数据库所在的路径。Linux下默认datadir为 /usr/local/mysql/data
2、MySQL体系结构
MySQL由以上几部分组成
# 连接池组件
# 管理服务和工具组件
# SQL接口组件
# 查询分析器组件
# 优化器组件
# 缓冲(Cache)组件
# 插件式存储引擎
# 物理文件
MySQL数据库区别于其它数据库的最重要的一个特点就是其插件式的存储引擎,需要注意的是,存储引擎是基于表的,而不是数据库。
下面是中文图示
3、MySQL存储引擎
存储引擎可以分为MySQL官方存储引擎和第三方存储引擎
InnoDB存储引擎:支持事务,其设计目标主要面向在线事物处理(OLTP)的应用。支持行锁设计、支持外键,从5.5.8以后,是默认的存储引擎。
MyISAM存储引擎:不支持事务、表锁设计,支持全文索引,主要面向一些OLAP数据库应用5.5.8以前,是默认的存储引擎(windows版本除外)。
NDB存储引擎:是一个集群存储引擎,其结构是share noting的集群架构,因此能提供更高的可用性。NDB的特点是数据全部放在内存中(5.5.1开始,可以将非索引数据放在磁盘上),因此主键查找的速度极快,并且通过添加NDB数据存储节点(Data Node)可以线性的提高数据库性能,是高可用、高性能的集群系统。
Memory存储引擎:将表中的数据存放在内存中,如果数据库重启或发生崩溃,表中的数据都将消失。它非常适用于存储临时数据的临时表以及数据仓库中的纬度表。默认使用哈希索引,非B+树索引。
Archive存储引擎:只支持INSERT和SELECT操作,5.1开始支持索引,使用zlib算法将数据行(row)进行压缩后存储,压缩比可达1:10,非常适合存储归档数据,如日志信息。
Federated存储引擎:不存放数据,只是指向一台远程MySQL数据库服务器上的表。
Maria存储引擎:新开发的存储引擎,设计目标主要是用来替代MyISAM存储引擎。
除了上面提到的存储引擎,还有很多存储引擎,他们都有各自的使用场景。
# MySQL数据库支持全文索引,MyISAM, InnoDB和Sphinx存储引擎都支持。
show engines; 查看当前使用的mysql数据库所支持的存储引擎。也可以通过查找information_schema架构下的engines表。
create table mytest Engine = MyISAM; 创建mytest表,存储引擎为MyISAM
alter table mytest Engine = InnoDB; 更改mytest表的存储引擎为InnoDB
使用不同的存储引擎,表的大小也不相同,通过表的大小,简单说明了各存储引擎之间的不同
4、连接MySQL
连接MySQL的操作是一个连接进程和MySQL数据库实例进行通信。从程序设计的角度来说,本质上是进程通信,常用的进程通信方式有管道、命名管道、命名字、TCP/IP套接字、UNIX域套接字。
# TCP/IP
TCP/IP套接字方式是MySQL数据库在任何平台下都提供的连接方式,也是网络中使用的最多的一种方式。一般情况下客户端(client)和MySQL实例(server)不在同一台机器上,通过TCP/IP网络连接。
例如:mysql -h192.168.0.18 -u xs -p
Enter password:
msql>
在通过TCP/IP连接到MySQL实例时,MySQL数据库会先检查一张权限视图,用来判断发起请求的客户端ip是否允许连接到MySQL实例。
msql>USE mysql;
msql>select host,user,password from user;
host显示%,表示任何ip都可以连接。
# 命名管道和共享内存
如果两个需要进程通信的进程在同一台服务器上,那么可以使用命名管道。
# UNIX域套接字
在linux和unix环境下,可以使用UNIX套接字,UNIX域不是一个网络协议,所以只能在MySQL客户端和数据库实例在一台服务器上的情况下使用。当数据库实例启动后,用户可以通过下列命令进行UNIX域套接字文件查找
show variables like 'socket';
知道了UNIX域套接字文件的路径后,就可以使用该方式进行连接
mysql -u lxs -S /tmp/mysql.sock
连接成功 mysql>
准备看一下这本书,顺便做一下记录,刚开始写,慢慢的也提高一下写博客的水平。有看过这本书的可以交流一下
转载于:https://www.cnblogs.com/xxss/p/10858036.html
MySQL技术内幕 InnoDB存储引擎【一】相关推荐
- Mysql技术内幕InnoDB存储引擎——InnoDB存储引擎
特此申明: 前段时间找工作所以看了<Mysql技术内幕InnoDB存储引擎>,整理的时候除了参考网上已有的笔记贴,加上自己整合的,可能和别人有雷同之处.不过无所谓啦,写出来自己看看,需要的 ...
- MySQL技术内幕-InnoDB存储引擎第2版-学习笔记-01
MySQL技术内幕-InnoDB存储引擎第2版-学习笔记-01 1. MySQL体系结构和存储引擎 1.1 定义数据库和实例 数据库database: 物理操作系统文件或其他形式文件类型的集合. 当使 ...
- MySQL技术内幕-InnoDB存储引擎第2版-学习笔记-02
MySQL技术内幕-InnoDB存储引擎第2版-学习笔记-02 6. 锁 人们认为行级锁总会增加开销.实际上,只有当实现本身会增加开销时,行级锁才会增加开销.InnoDB 存储引擎不需要锁升级,因 ...
- MySQL技术内幕 InnoDB存储引擎:锁问题(脏读、不可重复读)
1.脏读 在理解脏读(Dirty Read)之前,需要理解脏数据的概念.但是脏数据和之前所介绍的脏页完全是两种不同的概念.脏页指的是在缓冲池中已经被修改的页,但是还没有刷新到磁盘中,即数据库实例内存中 ...
- Mysql技术内幕——InnoDB存储引擎
一.mysql体系结构和存储引擎 1.1.数据库和实例的区别 数据库:物理操作系统或其他形式文件类型的集合.在mysql下数据库文件可以是frm,myd,myi,ibd结尾的文件. 数据库实例:由数据 ...
- mysql技术内幕innodb存储引擎——表索引算法和锁_(转)Mysql技术内幕InnoDB存储引擎-表索引算法和锁...
表 原文:http://yingminxing.com/mysql%E6%8A%80%E6%9C%AF%E5%86%85%E5%B9%95innodb%E5%AD%98%E5%82%A8%E5%BC% ...
- MySQL技术内幕InnoDB存储引擎(表索引算法和锁)
表 4.1.innodb存储引擎表类型 innodb表类似oracle的IOT表(索引聚集表-indexorganized table),在innodb表中每张表都会有一个主键,如果在创建表时没有显示 ...
- MySQL技术内幕 InnoDB存储引擎——第2章 InnoDB存储引擎(未完待续)
第2章 InnoDB存储引擎 2.1 InnoDB存储引擎概述 InnoDB存储引擎是第一个完整支持ACID事务的MySQL存储引擎(BDB是第一个支持事务的MySQL存储引擎,现在已经停止开发). ...
- mysql技术innodb存储引擎读后感_《Mysql技术内幕-InnoDB存储引擎》读书笔记 (一)...
@(Mysql) 官方数据库 下载 导入/data/mysql57/bin/mysql --socket /data/mysql3306/mysql.socket -uroot -ppassword1 ...
- MySQL技术内幕-InnoDB存储引擎:第一章阅读
目录 MySql体系结构和存储引擎 1.1 数据库与数据库实例 1.2 MySQL体系结构 1.3 MySQL表存储引擎 1.3.1 InnoDB存储引擎 1.3.2 MyISAM存储引擎 1.3.3 ...
最新文章
- 家用路由器支持组播吗_组播分布树及其转发模式
- leetcode 两数之和 整数反转 回文数 罗马数字转整数
- idea.config.path is invalid 问题
- teechart mysql_TeeChart 的应用
- Wireshark工作笔记-TCP的状态解析,以及建立连接与关闭连接
- 构造函数必须是public吗_谈谈 constructor 的private和public
- msyql 1062
- u盘最大单个文件支持多少g_小身材用处大,金属U盘功能不简单
- BZOJ1034: [ZJOI2008]泡泡堂BNB
- autocad字体ccfang_cad替换字体(cad找不到字体怎么替换)
- 变量选择详解与源码实现
- 《剑指0ffer》刷题笔记 -01 二维数组中的查找
- 【JAVA】java递归测试考拉兹猜想/冰雹猜想
- 一日一Shader·进阶版笔刷【SS_18】
- C++检测键盘大小写
- python创建目录
- 付给铁匠的账单 数据结构
- c语言输入f1到f11,我来告诉你:电脑键盘的F1至F12正确用处
- 搜狗输入法截屏不能用了
- 就“威客“接受中国青年报采访