innodb是什么(innodb是什么引擎)

作者:空中飞翔的鱼  更新 :2023-02-25 18:52:19   数据库  

最佳答案InnoDB是MySQL的数据库引擎之一,为MySQL的默认存储引擎,为MySQL AB发布binary的标准之一与传统的ISAM与MyISAM相比,InnoDB的最大特色就是支持了ACID兼容的事务功能,类似于PostgreSQL。

InnoDB 是 MySQL 数据库引擎之一,现在是 MySQL 默认存储引擎,为 MySQL AB 公布 binary 标准之一。InnoDB 由 Innobase Oy 公司开发,2006年, 甲骨文公司于5月并购。与传统 ISAM 与 MyISAM 相比,InnoDB 支持的主要特点是支持 ACID 适配的事务(Transaction)作用,类似 PostgreSQL。

innodb是什么(innodb是什么引擎)

目前 InnoDB 选择双轨制授权,一种是双轨制授权, GPL 授权,另一种是专有软件授权。

介绍

首选模块适用于交易数据库,适用于交易数据库 ACID 事务,适用于行级锁定。InnoDB 它是为了解决大量信息时的大性能设计的。InnoDB 存储引擎完全和 MySQL 服务器集成,InnoDB 存储引擎为了在主内存中缓存数据和检索而保持自己的缓冲池。InnoDB 存放它的表&检索一个表空间,表空间可以包括多个文档(或初始磁盘分区)。这和 MyISAM 不同的表,如在 MyISAM 表中每个表都存在分离的文件中。InnoDB 表可以是任何规格,即使文件尺寸受到限制 2GB 在操作系统上。InnoDB 默认的包含在内 MySQL 二进制分发。Windows Essentials installer 使 InnoDB 变成 Windows 上 MySQL 的默认表。

InnoDB 给 MySQL 带来了事务(transaction)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)、多版本并发控制(multi-versioned concurrency control)的事务安全(transaction-safe (ACID compliant))型表。InnoDB 带来了行级锁(locking on row level),提供与 Oracle 类似的不锁读取(non-locking read in SELECTs)。InnoDB 带来了行级锁(locking on row level),提供与 Oracle 类似的不锁读取(non-locking read in SELECTs)。InnoDB 锁定专家级别,也在 SELECT 提供一个句子 Oracle 风格一致的非锁读。这些特点增强了多客户布局和性能。没有在 InnoDB 毕竟,在中间扩大锁定的必要性, InnoDB 中行级锁定适用于非常小的空间。InnoDB 还支持 FOREIGN KEY 强制。在 SQL 在查询过程中,您可以自由地查询 InnoDB 类型的表等 MySQL 表的类型可以混合,甚至可以在同一查询中混合。这些特性都提高了多客户并发操作的性能。在 InnoDB 表中无需扩大锁定(lock escalation),由于 InnoDB 的行级锁定(row level locks)适用于非常小的空间。InnoDB 是 MySQL 第一个提供外键约束(FOREIGN KEY constraints)的表模块。

从技术上,InnoDB 是一套放到 MySQL 完整的后台数据库管理,InnoDB 在主内存中创建一个专用的缓冲池,用于高速缓冲数据和检索。InnoDB 将数据和检索存储在表空间中,可能包含多个文档,这与其他文档不同,例如,在表空间中, MyISAM 中表存储在独立的文件中。InnoDB 表的大小仅限于操作系统的文件大小,也可以应用每个表的独立表空间,只需打开选项即可 innodb_file_per_table。

在 MySQL 在源代码中,从 3.23.34a 开始包括 InnoDB 表模块,并在 MySQL -Max 激活二进制版本。

特性方法

1.假如 Unixtop 或 Windows 资源管理器(Task Manager)表明服务的 CPU 占用量低于 70%,(shows that the CPU usage percentage with your workload is less than 70 %,)您的系统瓶颈可能在磁盘读写上。也许你提交了很多事情,或者缓冲池(buffer pool)太小了。也许你提交了很多事情,或者缓冲池(buffer pool)太小了。设置更大的缓冲池会有帮助,但一定要注意不要超过物理内存。 80%。

2.在一个事务中包含几个修改。如果事务对数据库进行了修改,则在事务提交时, InnoDB 一定要把日志更新到硬盘上。由于硬盘的旋转速度一般最多为 167 转/秒,那么只要硬盘不欺骗操作系统,提交的事务数量限制也是一样的 167 第二次/秒·客户。

3.如果你不在乎最近的几件事,你可以在里面 my.cnf 参数将在文档中进行 innodb_flush_log_at_trx_commit 设置为 0。InnoDB 无论如何,总是尝试一秒更新(flush)日志,虽然更新不能保证。

4.日志文档(log files)设置大一点,使日志文档之和与缓冲池相匹配(buffer pool)一样大。当 InnoDB 当日志文档空间耗尽时,它不得不在一段时间内将缓冲池中修改的内容提到硬盘上。 小型日志文档可能会导致不必要的硬盘写作操作。但大型日志文件的缺点是在数据修复中需要很长时间。

5.一样 log buffer 尽量设大一点,比如说 8 MB。

6.如果要存储拉长的字符串或字段,可能会包括大量的字符串 NULLs,请选择 CHAR 型字段取代 VARCHAR。一个 CHAR(n)字段总是应用的 n bytes 存储数据,即使字符串很短或一个字符串很短 NULL 值。较小的表更适合缓冲池,同时减少硬盘 I/O 。

7.(适宜从 3.23.41 以上版本) 在一些版本 Linux 和 Unixes 中,应用 Unixfsync 或者以其他类似的方式将文档更新到硬盘是极其缓慢的。InnoDB 默认的方法是 fsync。如果对数据库管理的硬盘写特性不满意,可以尝试在数据库管理中 my.cnf 里将 innodb_flush_method 设置为 O_DSYNC,虽然 O_DSYNC 在大多数系统中,选项看起来比较慢。

8.在向 InnoDB 导入数据时,请确认 MySQL 没有开启 autocommit=1.否则,每一个插入句子都要把每一个插入句子都要把每一个插入句子 log 更新到硬盘。在你的 SQL 添加导入文件的第一行

set autocommit=0;并添加到最后一行 commit;

如果采用 mysqldump 选项–opt,您将得到快速导进 InnoDB 表的转储(dump)文档甚至可以停止使用上述文档 set autocommit=0; … commit;。

9.当心 insert 集全的大回滚(roolback):在插入时 InnoDB 应用插入缓冲减少硬盘 I/O,但在相应的回滚中没有使用这样的系统。一个系统。 disk-bound rollback 可能会花费相应的插入时间 30 翻倍。如果有失控回滚,可以查看第一个 6.1 终止章节的方法。

10.同时也要小心一个大的。 disk-bound 操作。应用 DROP TABLE 或 TRUNCATE(从 MySQL-4.0 以上) 清除一块表,而不是使用它 DELETE FROM yourtable。

11.如需插入大量纪录行,可应用多行(multi-line)的 INSERT 降低客户端与服务器端之间的通信成本:

INSERT INTO yourtable VALUES (1, 2), (5, 5);

这种方法对插入任何表都有效,而不仅仅是 InnoDB。

12.如果在辅键上有 UNIQUE 管束,从 3.23.52 和 4.0.3 一开始,您可以在导入对话中检查唯一的键(uniqueness check)关闭以提高数据导入率:

SET UNIQUE_CHECKS=0;大表导入将减少大量硬盘 I/O,由于这时 InnoDB 可以用自己的插入缓冲记录辅助索引。

13.如果在表中含有一个子 FOREIGN KEY 管束,从 3.23.52 和 4.0.3 一开始,外键可以在导入对话中进行检查(foreign key check)关闭以提高数据导入率:

SET FOREIGN_KEY_CHECKS=0;

这将减少大量硬盘的大表导入 I/O。

注意事项

导出数据的一些注意事项:

假如 TRANSACTIONS 部分报告锁定等待(lock waits),然后你的应用程序可能有锁争用(lock contention)。导出信息有助于跟踪事务死锁的原因。

SEMAPHORES 部分报告线程等待信号量及其统计进程必须转动(spin)或等候(wait)一个互斥(mutex)或 rw-lock 信号量的次数。大线程等待信号的次数可能是因为硬盘 I/O 造成,或 InnoDB 内部争用难题(contention problems)。争用(Contention)可能是由于较重的并发性检查,或操作系统的线程调度问题。 在这种情况下,可以将 innodb_thread_concurrency 设定低于默认 8 。

FILE I/O 部分列出了文档 I/O 等待请求。过大的值意味着硬盘 I/O 瓶颈。

BUFFER POOL AND MEMORY 部分到页面阅读和写作的统计数据。通过这些值,您可以计算出您查看所需的一般数据文件 I/O 量。

- END -

身份证后四位代表什么意思

身份证后四位代表什么意思

身份证后四位的前两位数字表示的是归属地派出所的编码,倒数第二位表示的是公民的性别,公民为男性则为单数,女性则为双...

诚信日是几月几日(在我国的诚信日是几月几日)

诚信日是几月几日(在我国的诚信日是几月几日)

诚信,是言行相合,是一诺千金,是童叟无欺,是童年里的那个“早”字,是历史里的曾子杀彘,更是武林广场大火烧出的城市...

牛头人是啥梗?(牛头人简称NTR,是日文)

牛头人是啥梗?(牛头人简称NTR,是日文)

牛头人简称NTR,是日文“寝取る”(Ne To Ru)的罗马拼音缩写,中译即“被他人强占配偶或对象”。是描述夫妻的其中一方和...

卡密(“卡密”源自于日语”)

卡密(“卡密”源自于日语”)

“卡密”源自于日语“かみ”,意思是“神、神明、神灵”,它的罗马音是“kami”,音译成中文就是“卡密”, 现在被指代在...

隶属于上海市青浦区的什么古镇

隶属于上海市青浦区的什么古镇

隶属于上海市青浦区的什么古镇,隶属于上海市青浦区的是朱家角古镇,朱家角古镇是江南水乡古镇,有着“上海威尼斯”的美...

6寸是多少厘米长度(6寸等于19)

6寸是多少厘米长度(6寸等于19)

6寸是多少厘米长度,6寸等于19.98厘米。因为1寸=3.33厘米。所以6寸=6x3.33厘米=19.98厘米。寸是中国制长度度量单位,厘米是国...

左倾右倾(左倾是指政治上追求进步、同情劳动人民的倾向)

左倾右倾(左倾是指政治上追求进步、同情劳动人民的倾向)

左倾是指政治上追求进步、同情劳动人民的倾向。右倾是指政治思想上,认识落后于实际,不能随变化了的客观情况变化、前...

粑粑柑的正确读音(耙耙柑是四川等地人们对春见柑橘的流行)

粑粑柑的正确读音(耙耙柑是四川等地人们对春见柑橘的流行)

耙耙柑是四川等地人们对春见柑橘的流行俗称,因为成熟时期其果皮软趴趴的2001年从中国柑橘研究所引进,广泛种植于四川...

cos20°等于多少(cos(20°) = 0)

cos20°等于多少(cos(20°) = 0)

cos(20°) = 0.93969262078591。分析过程如下:余弦(余弦函数),三角函数的一种。在Rt△ABC(直角三角形)中,∠C=90°,∠A的余...

银渐层多少钱一只(银渐层猫一般价格在3000)

银渐层多少钱一只(银渐层猫一般价格在3000)

银渐层猫一般价格在3000-2万不等。银渐层英短属于英国短毛猫的一种,它因为颜色更具有渐变的色彩而得名,在猫类中银渐...

查看更多知识百科