何时需要将表从 MyISAM 更改为 InnoDb?

2024-01-04

这个问题就像我之前问题的延续:InnoDb 比 MyISAM 更适合频繁的并发更新和插入,我这样说对吗? https://stackoverflow.com/questions/1722155/am-i-right-that-innodb-is-better-for-frequent-concurrent-updates-and-inserts-than/

但这一次我有具体的问题。
我们知道,当我们没有很多并发更新(插入)时,MyISAM 比 InnoDb 更快。当我们有许多并发更新时,MyISAM 表会被锁定,所有其他客户端都应该等待。

1)但是什么时候该从MyISAM改为InnoDb呢?每秒更新1次?每秒10次更新?每秒更新 100 次?
2)举一个具体的例子,将我网站上的表之一更改为 InnoDb 会更好吗?我通常每分钟更新几次(来自不同的会话),但有时每秒可能更新约 2-3 次?


我认为您提到的上一个问题已经基本回答了您的问题。

1)当您创建表时。 InnoDB 提供的优势不仅仅是行级锁定。当您有多个 sql 客户端进行更新时,速度更快,数据丢失/损坏的风险更低,引用完整性等......每秒只有几个事务(TPS),您不太可能看出性能差异,但 InnoDB更可靠并且可扩展性更好。

2)只有 2-3 TPS,您不会看到 InnoDB 和 MyISAM 之间有任何显着差异。即使在半古老的硬件上也是如此。

仅供参考,现代磁盘驱动器每秒应该能够处理至少约 200 个更新事务。

我建议您阅读InnoDB http://en.wikipedia.org/wiki/InnoDB, MVCC http://en.wikipedia.org/wiki/Multiversion_concurrency_control and ACID http://en.wikipedia.org/wiki/ACID.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

何时需要将表从 MyISAM 更改为 InnoDb? 的相关文章

  • 使用 MySQLdb 在 Python 中执行 .sql 文件

    我有一个 sql 文件 其中包含一堆 SQL 查询 每个查询跨越多行 我想通过 Python 在 MySQL 中执行这些查询MySQLdb sqlite3为此目的有一个 非标准快捷方式 称为executescript http docs p
  • 如何在 MacOS 上卸载 Mysql Shell

    我错误地安装了 MySql Shellhttps dev mysql com doc mysql shell 8 0 en https dev mysql com doc mysql shell 8 0 en 在我的 MacBook Pro
  • 在 MySQL 中创建布尔列并将 false 作为默认值?

    我想在 MySQL 中创建一个表boolean默认值为的列false 但它默认接受 NULL 你必须指定0 意思是假 或1 意思是 true 作为默认值 这是一个例子 create table mytable mybool boolean
  • 将此 MySQL 查询转换为 PyGreSQL

    我正在开发一个 Ruby 应用程序 它使用 mysql 函数 XOR 和 BIT COUNT 不过 我现在需要在运行 PyGreSQL 的 Heroku 上运行该应用程序 我找不到任何可以帮助我的 PyGreSQL 文档 那么任何人都可以翻
  • 循环中的递归算法复杂度(运行时间)

    我想了解您对如何检测以下递归算法的 T n 运行时间 的意见 Charm 是一种用于发现事务数据库中频繁闭项集的算法 频繁闭项集列表是在一组交易 tids 中多次出现的频繁项 例如面包和牛奶是经常一起购买的物品 它们是通过将索引为 i 的当
  • 更快地评估从右到左的矩阵乘法

    我注意到以二次形式评估矩阵运算右到左明显快于左到右在 R 中 取决于括号的放置方式 显然它们都执行相同的计算量 我想知道为什么会这样 这与内存分配有什么关系吗 A 5000 5000 B 5000 2 A matrix runif 5000
  • 选择查询不适用于使用Parameters.AddWithValue 的参数

    C 中的以下查询不起作用 但我看不出问题所在 string Getquery select from user tbl where emp id emp id and birthdate birthdate cmdR Parameters
  • 安装后步骤未成功完成 MySQL Mac OS Sierra

    pyEnv Anants MacBook Pro litibackend anantchandra brew postinstall mysql gt Postinstalling mysql gt usr local Cellar mys
  • 缓存感知树的实现

    I have a tree where every node may have 0 to N children 用例是以下查询 给定指向两个节点的指针 这些节点是否位于树的同一分支内 Examples q 2 7 gt true q 5 4
  • Android 预填充数据库 [重复]

    这个问题在这里已经有答案了 我正在开发一个 Android 应用程序 需要在该应用程序的数据库中填充多个条目 一个表 包含 1000 10000 行 然后用户才能使用该应用程序 我浏览了一些教程 但不确定执行此操作的最佳方法 我是否应该在每
  • mysqldb接口错误

    我对 mysqldb python 的 mysql 模块 有一个非常奇怪的问题 我有一个文件 其中包含用于在表中插入记录的查询 如果我从文件中调用函数 它就可以正常工作 但是当尝试从另一个文件调用其中一个函数时 它会抛出一个 mysql e
  • VB.NET 和 MySql UPDATE 查询

    我的代码在这里没有错误 至少在我调试它时没有错误 我使用VS 2010 但我希望发生的是 当我单击添加按钮时 文本框 txtQty 中的数字将添加到当前保存在 数量 列中的数字中 例如 txtQty 100 该列上的当前值为 200 我想将
  • 无法打开 phpmyadmin,require_once(./libraries/common.inc.php):无法打开流:没有这样的文件或目录

    当我做php usr share phpmyadmin index php 我明白了 PHP 警告 require once libraries common inc php 无法打开流 第 33 行 usr share phpmyadmi
  • Python 2.x 与 3.x 速度

    我是一名博士生 使用 Python 编写我的研究代码 我的工作流程通常包括对代码进行小的更改 运行程序 查看结果是否有所改进 然后重复该过程 因此 我发现自己等待程序运行的时间比实际处理它的时间要多 我知道 这是一种常见的经历 我目前在我的
  • 不能为实体类型指定过滤表达式。过滤器只能应用于层次结构中的根实体类型

    我在添加新迁移时遇到此错误 无法为实体类型 Babysitter 指定筛选表达式 e gt Not e IsDeleted 过滤器只能应用于层次结构中的根实体类型 我正在做的是 我有 2 个类 Babysitter 和 Parent 它们都
  • binary_log_types.h:没有这样的文件或目录

    我正在编译一个小型 mysql C 项目并且 遇到以下错误 C Program Files x86 MySQL MySQL Server 5 7 include mysql com h 22 30 fatal error binary lo
  • 搜索多个表 (SQL)

    我需要能够有一个 SQL 查询来使用简单的搜索来搜索我的数据库 这是我的表格现在的样子 Table artists id name Table albums id artistID name Table songs id albumID n
  • numpy 数组最快的保存和加载选项

    我有一个生成二维的脚本numpy数组与dtype float和形状的顺序 1e3 1e6 现在我正在使用np save and np load对数组执行 IO 操作 然而 这些函数对于每个数组都需要几秒钟的时间 是否有更快的方法来保存和加载
  • 为什么我的 CAOpenGLLayer 更新速度比之前的 NSOpenGLView 慢?

    我有一个在 Mac OS X 上渲染 OpenGL 内容的应用程序 最初它渲染到 NSOpenGLView 然后我将其更改为渲染到 CAOpenGLLayer 子类 当我这样做时 我看到了巨大的性能损失 帧速率减半 鼠标响应能力降低 卡顿
  • 在 Java Web 应用程序中获取 DataSource 资源

    我的 context xml 文件中有以下资源标记

随机推荐