MySQL夯实之路-存储引擎深入浅出

innoDB

Mysql4.1以后的版本将表的数据和索引放在单独的文件中

采用mvcc来支持高并发,实现了四个标准的隔离级别,默认为可重复读,并且通过间隙锁(next-key locking)策略防止幻读(查询的行中的间隙也会锁定)

基于聚簇索引建立,主键要尽可能小(因为二级索引中包含主键列,主键很大,其他索引也会很大)

内部做了很多优化,磁盘读取数据时的可预测预读,自动在内存中创建hash索引加速操作的自适应哈希索引(adaptive hash index),加快插入操作的插入缓冲区

Myisam

mysql5.1版本前默认为myisam存储引擎

myisam不支持事务和行级锁,崩溃后无法安全修复

将表存在两个文件中:数据文件,索引文件,.mdy和.myi

特性:

查询速度快:相比于innoDB,innoDB需要缓存索引和数据,myisam只缓存索引。innoDB要维护mvcc。innoDB寻址先到块,再到行,myisam直接定位到offset

只支持表锁,对整张表加锁,读取时加共享锁,写入时加排他锁。表读取是也可以往表中插入新记录(并发插入),插入速度快。

支持全文索引。

修复慢,安全性不如innoDB。

延迟更新索引键

Myisam压缩表

创建导入数据后不会再修改数据适合使用Myisam压缩表,压缩表不能进行修改,支持索引但也是只读的,表中记录独立压缩的,读取但行时不需要解压整个表(页)。

Myisam性能问题最明显的是表锁问题

其他引擎

Blackhole引擎,不存储数据,会丢弃所有插入的数据。用于复制的场景,如主从复制。

CSV引擎,可以将CSV文件作为MySQL表来处理,可以作为一种数据交换机制。

Memory引擎,数据存在内存中,访问速度快,重启后数据会丢失。

Merge引擎,是MyISAM的变种,由多个MyISAM表合并而来的虚拟表。

选择合适的引擎

Mysql5.5版本时将innoDB作为默认的存储引擎,优先选择innoDB。尽量不要混合使用存储引擎

优先考虑的因素

事务

如果应用需要事务支持,那么InnoDB(或者XtraDB)是目前最稳定并且经过验证的选择。如果不需要事务,并且主要是SELECT和INSERT操作,那么MyISAM是不错的选择。一般日志型的应用比较符合这一特性。


备份


如果需要在线热备份,那么选择InnoDB就是基本的要求。


崩溃恢复
 

MyISAM崩溃后发生损坏的概率比InnoDB要高很多,而且恢复速度也要慢。

特性

1.innoDB支持行级锁,myisam只支持表级锁。

2.innoDB还支持外键,myisam不支持。

3.innoDB会缓存数据和索引,myisam值缓存索引。

4.myisam查询性能好,innoDB插入,更新性能好,删除从性能上InnoDB更优,但DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。myisam适合查多写少,innoDB适合写多读少。

5.innoDB不支持全文索引(5.6开始支持),myisam支持。

日志应用:myisam,archive,开销低,插入速度快

只读或者大部分只读:myisam(如果不介意崩溃,崩溃不是小问题)

订单处理:innoDB,支持事务

电子公告牌和主题讨论区:大部分数据库操作效率不高

CD-ROM应用:myisam表或者myisam压缩表

大数据量:   3-5TB,或者更大,innoDB

10TB:需要建立数据仓库,infobright或tokuDB

转换表的引擎

执行时间长,会加读锁

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/618679.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis:原理速成+项目实战——Redis实战13(GEO实现附近商铺、滚动分页查询)

👨‍🎓作者简介:一位大四、研0学生,正在努力准备大四暑假的实习 🌌上期文章:Redis:原理速成项目实战——Redis实战12(好友关注、Feed流(关注推送)、滚动分页查…

基于ssm的校园预点餐系统(有报告)。Javaee项目。ssm项目。

演示视频: 基于ssm的校园预点餐系统(有报告)。Javaee项目。ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring Sp…

大语言模型向量数据库

大语言模型&向量数据库 LARGE LANGUAGE MODELSA. Vector Database & LLM WorkflowB. Vector Database for LLMC. Potential Applications for Vector Database on LLMD. Potential Applications for LLM on Vector DatabaseE. Retrieval-Based LLMF. Synergized Exampl…

element+vue 之图片放大器

1.安装插件 npm install vue-photo-zoom-pro2.main.js导入 // 放大镜 import VuePhotoZoomPro from vue-photo-zoom-pro Vue.use(VuePhotoZoomPro)3.页面使用 <vue-photo-zoom-pro:url"imgUrl":out-zoomer"true":scale"2"style"width:…

Leetcode202快乐数(java实现)

今天分享的题目是快乐数&#xff1a; 快乐数的定义如下&#xff1a; 快乐数&#xff08;Happy Number&#xff09;是指一个正整数&#xff0c;将其替换为各个位上数字的平方和&#xff0c;重复这个过程直到最后得到的结果为1&#xff0c;或者无限循环但不包含1。如果最终结果为…

使用ElementUI的el-tab+vxe-table表格+复选框选择

效果&#xff1a; 功能&#xff1a;首先进来是全部清空的状态的 点击左边选择不同项右边会实时发送接口获取数据填充表格 复选的内容可以保留显示&#xff0c;比如A的1勾选后切换到B再切换回来A的1仍然是勾选状态 说实话官网的setCheckboxRow方法我实现不了&#xff0c;这里…

2024年华夏银行总行社会招聘公告

信息科技部自动化测试与开发类岗  工作地点&#xff1a;北京市 学历要求&#xff1a;本科及以上 工作职责 1、持续推进自动化测试的开展&#xff0c;提升自动化测试覆盖率,包括方案设计、测试分析、测试执行和总结等。 2、负责自动化测试工具和框架搭建&#xff0c;根据…

CSAPP阅读笔记-信息的表示和处理

信息的表示和处理 包括整数、浮点数的存储格式、计算中可能存在的问题等 信息存储 大多数计算机使用8位的块&#xff0c;或者字节(byte)&#xff0c;作为最小的可寻址的内存单位&#xff0c;而不是访问内存中单独的位。机器级程序将内存视为一个非常大的字节数组&#xff0c…

fisco-bcos部署pro生产版本

我这里使用的 Ubuntu20.4系统&#xff0c;linux系统把操作命令apt改为yum即可 升级安装包 apt-get update 安装jdk&#xff0c;我这里使用jdk17 apt -y install openjdk-17-jdk-headless 查看java版本 java -version 安装依赖 apt-get install -y curl docker.io docker-com…

【Databend】行列转化:一行变多行和简单分列

文章目录 数据准备和需求生成序列和分隔函数根据分隔符变多行JSON 数据简单分列总结 数据准备和需求 行列转化在实际工作中很常见&#xff0c;其中最常见的有一行变多行&#xff0c;有下面一份数据&#xff1a; drop table if exists fact_suject_data; create table if not …

基于SSM+JSP的订餐管理系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

金融疆界:在线支付系统渠道网关的创新设计(一)

这是《百图解码支付系统设计与实现》专栏系列文章中的第&#xff08;11.1&#xff09;篇。点击上方关注&#xff0c;深入了解支付系统的方方面面。 整个渠道网关的内容预计会分成5篇来讲&#xff1a;1&#xff09;定位、术语、概要设计。2&#xff09;领域模型、状态机设计。3…

数据结构第十三弹---链式二叉树基本操作(上)

链式二叉树 1、结构定义2、手动创建二叉树3、前序遍历4、中序遍历5、后序遍历6、层序遍历7、计算结点个数8、计算叶子结点个数9、计算第K层结点个数10、计算树的最大深度总结 1、结构定义 实现一个数据结构少不了数据的定义&#xff0c;所以第一步需要定义二叉树的机构。 typ…

学习笔记-mysql基础(DDL,DML,DQL)

一.DDL DDL,Data Definition Language,数据库定义语言,该语言包括以下内容: 对数据库的常用操作对表结构的常用操作修改表结构 1.对数据库的常用操作 -- 查看所有的数据库 show databases -- 创建数据库 create database [if not exists] test [charsetutf8] -- 切换 选择 …

记录汇川:H5U与Factory IO测试12

主程序&#xff1a; 子程序&#xff1a; IO映射 子程序&#xff1a; 辅助出料 子程序&#xff1a; 自动程序 Factory IO配置&#xff1a; 实际动作如下&#xff1a; Factory IO测试12

基于SSM的仓库在线管理系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

20-链表-删除链表中的节点

这是链表的第20题&#xff0c;力扣链接。 有一个单链表的 head&#xff0c;我们想删除它其中的一个节点 node。 给你一个需要删除的节点 node 。你将 无法访问 第一个节点 head。 链表的所有值都是 唯一的&#xff0c;并且保证给定的节点 node 不是链表中的最后一个节点。 删除…

支持向量机(公式推导+举例应用)

文章目录 引言间隔与支持向量机对偶问题&#xff08;拉格朗日乘子法&#xff09;SMO算法核函数软间隔与正则化软间隔正则化&#xff08;罚函数法&#xff09; 模型的稀疏性结论实验分析 引言 在机器学习领域&#xff0c;支持向量机&#xff08;Support Vector Machine&#xf…

蓝牙音视频远程控制协议(AVRCP) AV/C command格式介绍

零.声明 本专栏文章我们会以连载的方式持续更新&#xff0c;本专栏计划更新内容如下&#xff1a; 第一篇:蓝牙综合介绍 &#xff0c;主要介绍蓝牙的一些概念&#xff0c;产生背景&#xff0c;发展轨迹&#xff0c;市面蓝牙介绍&#xff0c;以及蓝牙开发板介绍。 第二篇:Trans…

生产数据不备份,用时两行泪

背景&#xff1a;项目使用pg一主一从&#xff0c;因慢sql导致查询慢&#xff0c;所以想从原本的4核加到16核&#xff0c;联系好运维后&#xff0c;打算先从从库开始操作&#xff0c;机器上的pgsql都正常关闭&#xff0c;然后停止&#xff0c;关机&#xff0c;扩容一切都很顺利&…