MySQL innodb介绍

news2024/12/25 0:57:53

364d04b35ee3484287e6df9d39c653b3.jpg

 

InnoDB引擎的优点是支持兼容ACID的事务,以及参数完整性(即对外键的支持)。

Oracle公司2005年10月收购了Innovase;Innobase采用双认证授权。它使用GNU发行,也允许其他想将InnoDB结合到商业软件的团体好的授权

mysql5.5.5之后数据库的默认存储引擎为InnoDB

 

mysql> show create table test\G

*************************** 1. row ***************************

       Table: test

Create Table: CREATE TABLE `test` (

  `id` int(4) NOT NULL AUTO_INCREMENT,

  `name` char(20) NOT NULL,

  `age` int(4) DEFAULT NULL,

  PRIMARY KEY (`id`),

  KEY `index_name` (`name`)

) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8

1 row in set (0.00 sec)

 

[root@XM ~]# ll /data/3307/ibdata1 ##存放InnoDB数据的文件

-rw-rw---- 1 mysql mysql 79691776 Mar 25 04:52 /data/3307/ibdata1

 

InnoDB引擎特点

1.支持事务,支持4个事务隔离级别,支持多版本读。

2.行级锁定(更新时一般是锁定当前行),通过索引实现,全表扫描仍然会是表锁,注意间隙锁的影响。

3.读写阻塞与事务隔离级别相关。

4.具有非常高效的缓存特性:能缓存索引,也能缓存数据。

5.整个表和主键以Cluster方式存储,组成一个平衡树。

6.所有Secondary Index都会保存主键信息。

7.支持分区,表空间,类似oracle数据库。

8.支持外键约束,5.5之前不支持全文索引,5.5之后支持外键索引。

小结:supports transactions,row-level locking。and foreign keys

9.和Myisam引擎比,Innodb对硬件资源要求比较高。

 

MySQL引擎之innodb引擎应用场景及调优

Innodb引擎适用的生产场景

1、需要事务支持的业务(具有较好的事务特性)

2、行级锁定对高并发有很好的适应能力,但需要确保查询时通过索引完成。

3、数据读写及更新都较为频繁的场景,如:bbs,sns,微博,微信等。

4、数据一致性要求较高的业务,例如:充值转账,银行卡转账。

5、硬件设备内存较大,可以利用Innodb较好的缓存能力来提高内存利用率,尽可能减少磁盘IO。

 

innodb_buffer_pool_size = 2048M

innodb_buffer_pool_size = 64M #InnoDB使用一个缓冲池来保存索引和原始数据,设置越大,在存取表里面数据时所需要的磁盘I/O越少。强烈建议不要武断地将InnoDB的Buffer Pool值配置为物理内存的50%~80%,应根据具体环境而定。

16G内存多实例差不多给2G

 

Innodb 引擎调优

1、主键尽可能小,避免给Secondary index 带来过大的空间负担。

2、建立有效索引避免全表扫描,因为会使用表锁。

3、尽可能缓存所有的索引和数据,提高响应速度,减少产品IO消耗。

4、在大批量小插入的时候,尽量自己控制事务而不要使用autocommit自动提交。有开关可以控制提交方式

5、合理设置innodb_flush_log_at_trx_commit参数值,不要过度追求安全性。

如果innodb_flush_log_at_trx_commit的值为0,log buffer每秒就会被刷写日志文件到磁盘,提交事务的时候不做任何操作。

6、避免主键更新,因为这会带来大量的数据移动。

 

MySQL多个引擎对比及数据库引擎支持知识

mysql> show engines\G ##mysql支持的引擎

*************************** 1. row ***************************

      Engine: MRG_MYISAM

     Support: YES

     Comment: Collection of identical MyISAM tables

Transactions: NO

          XA: NO

  Savepoints: NO

*************************** 2. row ***************************

      Engine: CSV

     Support: YES

     Comment: CSV storage engine

Transactions: NO

          XA: NO

  Savepoints: NO

*************************** 3. row ***************************

      Engine: MyISAM

     Support: YES

     Comment: MyISAM storage engine

Transactions: NO

          XA: NO

  Savepoints: NO

*************************** 4. row ***************************

      Engine: BLACKHOLE

     Support: YES

     Comment: /dev/null storage engine (anything you write to it disappears)

Transactions: NO

          XA: NO

  Savepoints: NO

*************************** 5. row ***************************

      Engine: MEMORY

     Support: YES

     Comment: Hash based, stored in memory, useful for temporary tables

Transactions: NO

          XA: NO

  Savepoints: NO

*************************** 6. row ***************************

      Engine: PERFORMANCE_SCHEMA

     Support: YES

     Comment: Performance Schema

Transactions: NO

          XA: NO

  Savepoints: NO

*************************** 7. row ***************************

      Engine: ARCHIVE

     Support: YES

     Comment: Archive storage engine

Transactions: NO

          XA: NO

  Savepoints: NO

*************************** 8. row ***************************

      Engine: InnoDB

     Support: DEFAULT

     Comment: Supports transactions, row-level locking, and foreign keys

Transactions: YES

          XA: YES

  Savepoints: YES

*************************** 9. row ***************************

      Engine: FEDERATED

     Support: NO

     Comment: Federated MySQL storage engine

Transactions: NULL

          XA: NULL

  Savepoints: NULL

9 rows in set (0.00 sec)

 

修改引擎推荐使用sed对备份内容进行引擎转换的方式,不要忘记修改my.cnf使之支持并能高效的使用对应的引擎

创建后引擎的更改,5.0以上

alter table oldboy ENGINE = INNODB;

alter table oldboy ENGINE = MyISAM;

更改引擎实例

alter table student ENGINE = MyISAM;

 

查看修改后的结果:

show create table student\G

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

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

相关文章

Java 动态原理详解

Java 动态代理是一种非常重要的编程技术,它在很多场景下都有着广泛的应用。本文将介绍 Java 动态代理的实现原理,并附上相应的源码,以帮助读者更好地理解和应用这一技术。 一、什么是 Java 动态代理? Java 动态代理是一种在运行时…

【并发基础】Happens-Before模型详解

目录 一、Happens-Before模型简介 二、组成Happens-Before模型的八种规则 2.1 程序顺序规则(as-if-serial语义) 2.2 传递性规则 2.3 volatile变量规则 2.4 监视器锁规则 2.5 start规则 2.6 Join规则 一、Happens-Before模型简介 除了显示引用vo…

双目测距--5 双目相机 联合 YOLOv8

目录 效果: 1、立体矫正不改变图像尺寸 2、视差图尺寸与原图尺寸一致 3、视差图、深度信息图 4、几个重要的函数 createTracker() 5、代码 main.cpp utils.cpp 效果: 1、立体矫正不改变图像尺寸 左右相机图像立体矫正后,图像尺寸为变化…

freeRTOS中使用看门狗的一点思考

关于看门狗想必各位嵌入式软件开发的朋友应该都不会陌生的。在嵌入式软件开发中,看门狗常被用于监测cpu的程序是否正常在运行,如果cpu程序运行异常会由看门狗在达到设定的阈值时触发复位,从而让整个cpu复位重新开始运行。 看门狗的本质是一个…

Qt QQueue 安全的多线程队列、阻塞队列

文章目录 1. C queue 队列基本用法2. Qt QQueue 队列基本用法3. Qt QQueue 多线程队列4. Qt BlockingQueue 自定义线程安全的阻塞队列 1. C queue 队列基本用法 在C中,queue是一个模板类,用于实现队列数据结构,遵循先进先出的原则。 ♦ 常用…

测试3:用例

目录 1.测试用例的基本要素 2.测试用例的设计方法 1.基于需求的设计方法 2.等价类 1.概念 2.步骤: 3.例子 3.边界值 1.概念 2.步骤 3.例子 4.判定表 1.概念 2.设计测试用例 3.例子 5.正交排列 1.什么是正交表 2.测试用例 3.如何通过正交表设计测试用例 6.场景…

(3)Qt——信号槽

目录 1.信号槽的概念** 2.信号槽的连接*** 2.1自带信号 → 自带槽 2.2 自带信号 → 自定义槽 2.3 自定义信号 3. 参数传递** 3.1 全局变量 3.2 信号槽传参 4. 对应关系** 4.1 一对多 4.2 多对一 1.信号槽的概念** 信号槽指的是信号函数与槽函数的连接,可…

AI绘图入门 安装 stable-diffusion-webui

下面介绍了N卡,A卡,或CPU跑 stable-diffusion-webui的方法。 1.安装python 3.10.x https://www.python.org/downloads/ 2.安装Git https://git-scm.com/downloads 【非必要】打开代理工具(比如clash)然后在cmd配置git的http和…

软件测试相关概念

✏️作者:银河罐头 📋系列专栏:JavaEE 🌲“种一棵树最好的时间是十年前,其次是现在” 目录 需求需求的定义测试人员眼中的需求为什么需求对测试人员如此重要如何深入理解需求 测试用例定义为什么要有测试用例 软件错误…

IT服务规划设计笔记

规划设计处于整个IT服务生命周期中的前端,其主要目的在于: (1)设计满足业务需求的IT服务 (2)设计SLA、测量方法和指标 (3)设计服务过程及其控制方法 (4)规…

learn_C_deep_9 (汇编角度理解return的含义、const 的各种应用场景)

return 关键字 不知道我们大家是否有一个疑惑:我们下载一个大型游戏软件(王者荣耀),都要花几个小时去下载,但是一旦我们游戏连输,想要删除这个软件的时候,它仅仅只需要十几秒,这是为…

主题建模和文本聚类:理论与实践

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

真题详解(3FN)-软件设计(六十九)

真题详解(构造二叉树)-软件设计(六十八)https://blog.csdn.net/ke1ying/article/details/130536155 学生信息学生id姓名性别1{家长ID}*班主任班级。 解析:当存在1对多的情况,要写个1{}*,中间用{}。 ()表…

一篇学会Gitlab搭建及使用

目录 一、Gitlab介绍 1、什么是Gitlab 二、搭建gitlab并实现ssl 1、配置yum源或下载gitlab包 2、安装依赖软件及获取GPG密钥 3、安装gitlab-ce 4、创建私有密钥 5、创建私有证书 6、创建CRT签名证书 7、利用openssl签署pem 证书 8、配置证书到gitlab 9、初始化gitla…

读书笔记:《图解CIO工作指南》

《图解CIO工作指南》第 4 版,日 . 野村综合研究所系统咨询事业本部 著,周自恒 译 大数据、云计算时代下的IT战略和IT实务 CIO工作:IT管理、IT架构、IT实践 以着眼企业未来的观点进行构思:可视化(业务与系统&am…

初始化vue中data中的数据

当组件的根元素使用了v-if的时候, 并不会初始化data中的数据 如果想完全销毁该组件并且初始化数据,需要在使用该组件的本身添加v-if 或者是手动初始化该组件中的数据 初始化化数据的一些方法 Object.assign(this.$data, this.$options.data()) this.$data:当前的da…

TortoiseGit(大乌龟)安装教程(Git 图形化工具,告别手敲命令)

TortoiseGit安装教程 1. 下载TortoiseGit 官方下载地址:https://tortoisegit.org/download/ 自行选择下载对应版本(大部分位64位),进行下载 2. 安装TortoiseGit 打开安装包,如下图所示: 点击 Next&…

IDM绿色最新2023中文版磁力下载工具

Internet Download Manager(idm)是一款优秀的多线程下载工具。它支持自动捕获剪贴板及浏览器及流媒体网站的音视频下载链接,还有批量队列下载、静默下载、站点抓取等众多功能选项,可以说是 Windows 平台上功能最为强大的多线程下载…

通过栈/队列/优先级队列/了解容器适配器,仿函数和反向迭代器

文章目录 一.stack二.queue三.deque(双端队列)四.优先级队列优先级队列中的仿函数手搓优先级队列 五.反向迭代器手搓反向迭代器 vector和list我们称为容器,而stack和queue却被称为容器适配器。 这和它们第二个模板参数有关系,可以…

录屏界鼻祖Camtasia 2023中文版功能介绍/下载安装激活教程

随着网络科技的迅速发展,所以对于电脑的使用率也就越来越高了!然而,也可能跟这有关系,目前各种类型的软件层出不穷,当然也就包括了电脑录屏软件。这给我们造成了一些困难,究竟哪一款适合自己呢?…