mysql的概念以及mysql架构分析

image.png
  • mysql逻辑结构
    从图中可以看到MySQL由以下几个部分组成
    连接池
    管理服务和工具组件
    SQL接口
    查询分析器
    优化器
    缓存
    插入式存储引擎
    物理文件
  • 物理结构:
    mysql软件(mysqld)+配置文件+mysql数据文件(磁盘上的文件:datadir)

逻辑的架构:
mysql架构

实例(mysqld_process)+memory+datadir

整体结构:
物理+逻辑(实例)=mysql
数据库 --理解为磁盘上面的文件
实例 --运行中mysqld+memory

mysql中是一个实例对应多个物理库

存储引擎

引擎(Engine)是电子平台上开发程序或系统的核心组件。利用引擎,开发者可迅速建立、铺设程序所需的功能,或利用其辅助程序的运转。一般而言,引擎是一个程序或一套系统的支持部分。常见的程序引擎有游戏引擎、搜索引擎、杀毒引擎.数据库引擎等。
把游戏的引擎比作赛车的引擎。引擎是赛车的心脏,决定着赛车的性能和稳定性,赛车的速度、操纵感这些直接与车手相关的指标都是建立在引擎的基础上的。游戏也是如此,玩家所体验到的剧情、关卡、美工、音乐、操作等内容都是由游戏的引擎直接控制的,它扮演着中场发动机的角色,把游戏中的所有元素捆绑在一起,在后台指挥它们同时、有序地工作。简单地说,引擎就是“用于控制所有游戏功能的主程序,从计算碰撞、物理系统和物体的相对位置,到接受玩家的输入,以及按照正确的音量输出声音等等。”
存储引擎就是指表的类型以及表在计算机上的存储方式。
mysql存储引擎有很多但是最常用的肯定是innoDB引擎,从5.5.5开始默认的mysql存储引擎就是InnoDB

  • innoDB存储引擎简介
    除了MyISAM外,使用最为广泛的存储引擎,由第三方公司开发,和mysql遵守相同的开源许可协议。
    支持事务安全
    数据多版本读取
    锁定机制的改进
    实现外键
    它有表空间的概念,但与oracle表空间相比又有较大的不同,首先,innodb的表空间分为两种形式,一种是共享表空间,也就是所有数据都被存放在同一个表空间(一个或多个数据文件)中,通过innodb_data_file_path来指定,增加数据文件须要停机重启。另外一种是独享表空间,也就是每个表的数据和索引都存放在一个单独的.ibd文件中。

事务的4个特性(commit/rollback):

1、数据完整性    事务完成之后,它对于数据的修改是永久性的,即使出现系统故障也能够保持
2、一致性   在事务开始和完成时,数据都必须保持一致状态。这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性;事务结束时,所有的内部数据结构(如B树索引或双向链表)也都必须是正确的。
3、隔离性    数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的“独立”环境执行。这意味着事务处理过程中的中间状态对外部是不可见的,反之亦然。
4、原子性   事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行
  • 查看存储引擎命令
mysql>  show variables like '%storage%';   --查询当前mysql支持的储存引擎
+----------------+--------+
| Variable_name  | Value  |
+----------------+--------+
| storage_engine | MyISAM |
+----------------+--------+
1 row in set (0.00 sec)
mysql> show engines;                                -查询当前库中支持存储引擎
  • 更改默认的存储引擎
# vim /data2/my.cnf                     --静态修改
default-storage-engine=innodb
#重启mysql 
/etc/init.d/mysqld stop
/etc/init.d/mysqld start
  • 测试innodb事务:
    事务的4个特性(commit/rollback):
    1、数据完整性
    2、一致性
    3、隔离性
    4、原子性
innodb与myisam的区别

mysql> use aaaa;
mysql> create table t1(id int) engine=myisam;   #设置t1表格为Myisam引擎
mysql> create table t2(id int);
mysql> create table t3(id int);

关闭自动提交功能
mysql> show variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | ON    |
+---------------+-------+
1 row in set (0.01 sec)
mysql> set session autocommit=off;   #关闭自动提交功能
Query OK, 0 rows affected (0.00 sec)

mysql> insert into t2 set id=1;
Query OK, 1 row affected (0.00 sec)
事务有隔离性 ,
mysql> commit;   提交
Query OK, 0 rows affected (0.04 sec)
不提交 看不到
image.png

image.png
  • 回滚


    image.png
  • innodb数据存储的方式


    image.png

    总结:
    在上图中可以看到数据先到buffer_pool(缓存池中)当我们commit的时候才会保存到硬盘当中,也就是说如果数据在保存到磁盘成功之后才算一个事务完成

  • innodb存储引擎的配置参数

innodb存储引擎的配置参数:
innodb_buffer_pool_size = 2G                        --innodb的数据缓冲大小(索引+数据),一般是物理的%50-%80
innodb_max_dirty_pages_pct = 90                 --缓冲区的脏块达到90%写回磁盘
innodb_flush_log_at_trx_commit = 1              --1时只要commit会强制把事务日志写回磁盘,0时只要commit把日志写至操作系统缓冲区,等待操作写盘,2时当commit延迟1秒写出回磁盘
innodb_log_buffer_size = 8M                     --事务日志文件的缓冲大小
innodb_data_file_path = ibdata1:100M:autoextend     --innodb数据文件
innodb_log_file_size = 256M                     --日志文件大小
innodb_log_files_in_group = 3                       --有三组日志
innodb_data_home_dir =/abc                      --数据文件存储的根目录,不写路径默认存储在datadir中
innodb_log_group_home_dir=                      --事务日志的存储根目录
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容