前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >网易MySQL微专业学习笔记(十)-MySQL存储引擎

网易MySQL微专业学习笔记(十)-MySQL存储引擎

作者头像
WindCoder
发布2018-09-19 18:07:42
5910
发布2018-09-19 18:07:42
举报
文章被收录于专栏:WindCoderWindCoderWindCoder

前言

这个系列属于个人学习网易云课堂MySQL数据库工程师微专业的相关课程过程中的笔记,本篇为其“MySQL数据库对象与应用”中的MySQL数据类型相关笔记。

所有笔记可能不定期更新,发布时不一定为最终版。

正文

Mysql存储引擎

有多种可选方案,可插拔,可修改存储引擎

基于表选择使用何种存储引擎

create table test(a int) engine = innodb;

show engines;

InnoDB存储引擎

索引组织表

支持事务

支持行级锁

数据块缓存

日志持久化

稳定可靠,性能好,线上尽量使用InnoDB

MyISAM存储引擎

堆表

不支持事务

只维护索引缓存池,表数据缓存交给操作系统

锁力度较大--导致并发性能非常差

数据文件可以直接拷贝,偶尔可能会用上

不建议线上业务数据使用

MEMORY存储引擎

数据全内存存放,无法持久化

性能较高

不支持事务

适合偶尔作为临时表使用

临时表仅在当前链接中有效,其他链接无法访问。

create temporary table tmp(id int) engine = memory;

BLACKHOL存储引擎

数据不作任何存储,如果直接保存在里面,会被直接丢掉。

利用Mysql Replicate,充当日志服务器

在Mysql Replicate环境中充当代理主

TokuDB

分形树存储结构

支持事务

行锁

压缩效率较高

适合大批量insert的场景

http://www.tokutek.com/tokudb-for-mysql/download-community/

Mysql Cluster

多主分布式集群

数据节点间冗余,高可用

支持事务

设计上易于扩展

面向未来,线上慎用

改变表的存储引擎

alert table m ENGINE = innodb;

InnoDB存储引擎

架构

     内存空间

     后台各种线程()

     磁盘上的文件

物理文件

     数据文件、日志文件

InnoDB系统表空间

ibdata1存放什么:

     回滚段

     所有InnoDB表元数据信息

     Double Write,Insert buffer dump等

自动扩展机制

日志文件

表定义文件

表名.

表数据文件

InnoDB数据文件存储结构

索引组织表(聚簇表)

根据表逻辑主键排序

数据节点每页16k--二分查找

根据主键寻址速度很快

主键值递增的insert插入效率较好

主键随机insert插入操作效率较差

因此,InnoDB表必须指定主键,建议使用自增数字

InnoDB数据块缓存池

数据的读写需要经过缓存

数据以整页(16k)为单位读取到缓存中

缓存中的数据以LRU策略换出

IO效率高,性能好

InnoDB数据持久化与事务

事务日志实时持久化

内存变化数据(脏数据)增量异步刷出到磁盘

实例故障考重放日志恢复

性能好,可靠,恢复快

InnoDB行级锁

写不阻塞读

不同行间的写相互不阻塞

并发性能好

InnoDB与事务ACID

事务ACID特效完整支持

回滚段失败回滚(A)

支持主外键约束(C)

事务版本+回滚段=MVCC(I)

事务日志持久化(D)

默认可重复读隔离级别,可以调整

事务锁粒度

行锁

InnoDB,Oracle

页锁

SQL Server

表锁

MyISAM,Memory

锁升级

InnoDB的gap lock

什么是幻读

A连接开启一个事务,并查处一个值,幻读情况下,在B连接中插入一个值,A连接再次查询时读取到的情况。

gap locak 消灭幻读

     InnoDB消灭幻读仅仅为了确保statement模式replicate的主从一致性

自增主键做条件更新,性能最好

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-08-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 正文
    • Mysql存储引擎
      • InnoDB存储引擎
        • MyISAM存储引擎
          • MEMORY存储引擎
            • BLACKHOL存储引擎
              • TokuDB
                • Mysql Cluster
                  • 改变表的存储引擎
                    • InnoDB存储引擎
                      • 架构
                      • 物理文件
                      • InnoDB系统表空间
                      • InnoDB数据文件存储结构
                      • InnoDB数据块缓存池
                    • InnoDB数据持久化与事务
                      • InnoDB行级锁
                    • InnoDB与事务ACID
                      • 事务锁粒度
                        • InnoDB的gap lock
                        相关产品与服务
                        云数据库 SQL Server
                        腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档