问题标签 [myisam]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
151 浏览

mysql - MySQL 表中的 TableName.MYD.filepart 文件是什么(myisam 引擎)

我在 MySQL 数据库(myisam 引擎)中有一个 TableName.MYD.filepart

0 投票
1 回答
610 浏览

mysql - 表锁可以缩放吗?/ 行锁对于嵌套集会更有效吗?

我正在使用嵌套集将分层数据存储在 MyISAM 表中;该表由每个用户的几个层次结构集组成。每个用户将是唯一一个写入其各自树的人,但其他用户可以读取它们。节点删除/插入要求同一树中的其他行更新其 lft 和 rgt 值,可能有数百行。

为了做到这一点,我需要获得一个表写锁,更新树中的其他节点,删除/插入行并解锁表。

我想知道的是——表锁是否可以扩展到数百个并发用户?数千?

在这种情况下,InnoDB 的行锁会更有效吗?(锁定几百行,主要由用户自己使用)

如果我要使用行锁,是否需要添加显式逻辑来处理死锁错误?

0 投票
2 回答
1830 浏览

sql - 即使对于非并发插入/更新,大型 MyISAM 表也很慢

我有一个带有 ~50'000'000 条记录的 MyISAM 表(网络爬虫的任务):

每隔几秒就会发生一次以下操作之一(但不会同时发生):

  1. INSERT ... VALUES (500 行) - 插入新任务
  2. UPDATE ... WHERE id IN(最多 10 个 id) - 更新批量任务的状态
  3. SELECT ... WHERE (by next_random_task index) - 加载一批任务进行处理

我的问题是插入和更新非常慢 - 运行几十秒,有时超过一分钟。不过,选择很快。为什么会发生这种情况以及如何提高性能?

0 投票
1 回答
258 浏览

mysql - MySQL:在哪种情况下我应该选择 MyIsam 而不是 innoDB?

InnoDB 似乎几乎完全优越,但在什么情况下我应该选择 MyIsam?

提前致谢!

0 投票
2 回答
228 浏览

php - 是否可以使用 PHP 和 JSON 预加载整个 MyISAM 数据集?

例如

假设我们在一个类别中有 1000 种产品。我们想过滤这些产品。

当我们使用 json 过滤产品时。每次我们需要对数据库运行单独的查询。

我们想知道是否有人知道是否可以显示预加载产品表。例如预加载栏:初始化搜索 (0 - 100%)

所以整个系统只会在加载时初始化一次,然后我们希望搜索结果可以是即时的。

不幸的是,调整客户服务器对我们来说并不是一个真正的选择,所以希望这里的人可能有更好的建议

提前致谢!

0 投票
2 回答
246 浏览

mysql - 从 myisam 迁移到 innodb 时的引用完整性问题

我想将我的一个数据库从 myisam 迁移到 innodb。主要原因是允许我的应用程序尊重参照完整性。

这就是我所做的

  1. 导出当前 myisam 数据库
  2. 删除了数据库
  3. 切换到 innodb 数据库http://parasjain.net/2010/06/08/how-to-switch-to-innodb-database-in-mysql/
  4. 验证引擎开关,然后创建新数据库

参照完整性现在有效。例如,如果我创建 Parent p1 和 Child c1 并在 c1 中引用 p1,我不能删除 P1,只要有一个 child 依赖它。

到现在为止还挺好

但是当我从导出的转储中导入旧数据时会出现问题

问题是新数据尊重参照完整性。但是在我现有的数据中,如果有任何关系,如 c2 引用的 p2,那么我可以删除 p2 破坏参照完整性。c2 现在是孤儿。

是否有任何方法可以修复/重新索引表,以便对现有数据也实施参照完整性?

0 投票
1 回答
375 浏览

mysql - 确保特定 MyISAM 表的“INSERT”是并发的?

我有一个基本上包含日志的 MyISAM 表。INSERT一个机器集群以每秒 50 次的速度在该表上执行单条记录,但同一个表也SELECT由 Web 应用程序编辑,并为其编制索引以适应这种情况。但是,没有UPDATEs 或DELETEs。

所以从我收集到的信息来看,我应该使用并发插入。(对吗?)MyISAM 通常会为我完成这项工作,而无需任何额外的工作。(这个对吗?)

但是我找不到一种方法来保证同时处理给定INSERT的。我知道我可以将全局变量设置concurrent_insert2,但我不想全局设置它。

所以我的问题是:

  • 有什么方法可以保证并发插入吗?

  • 如果没有,是否可以使用命令来查看表是否满足并发插入要求?(我相信只知道一张桌子是否有洞就足够了?)因为我也会满足于能够只监控桌子。

  • 而且我也很好奇,有没有其他数据库系统可以更好地处理这种负载?如果发生这种情况,我完全可以接受 NoSQL 解决方案。只要我可以从 Ruby 和 C 中与它交谈。

0 投票
2 回答
2417 浏览

mysql - 克服 MyISAM 表中 2^32 行的 MySQL 限制

我想在 MySQL 中创建一个 MyISAM 表(尝试了 5.0.x 和 5.1.x 的各种版本),它允许超过 2^32 行。实现这一点的方法是让 MySQL 使用 8 字节而不是 4 字节的行指针。

这是 MySQL 手册的引述:

如果您使用 --with-big-tables 选项构建 MySQL,则行限制增加到 1.844E+19 行。请参见第 2.3.2 节,“典型配置选项”。Unix 和 Linux 的二进制发行版是使用此选项构建的。

听起来很简单,对吧?但是我已经尝试了 Linux x86_64 的各种二进制发行版,并且还使用“--with-big-tables”选项从源代码构建 MySQL。在每种情况下,我仍然无法超出 2^32 的限制。我这样创建一个表:

CREATE TABLE big (col int) MAX_ROWS=1099511627776

当我检查表状态时,它说:

Create_options: max_rows=4294967295

如何逃离 32 位炼狱?使用 InnoDB 可能会解决问题,但对于我正在运行的查询类型,它的执行速度要慢得多。

仅供参考,这是一个没有解决问题的重要参考:

http://jeremy.zawodny.com/blog/archives/000796.html

0 投票
8 回答
4107 浏览

database - 如何在没有事务的情况下使用 Oracle?

MySQL 具有不支持事务的特殊表类型 MyISAM。甲骨文有这样的东西吗?我想创建需要非常快(将存储大量数据)并且不需要事务的只写数据库(用于日志记录)。

0 投票
1 回答
759 浏览

c# - 将实体框架与 MyIsam 表一起使用

有一个关于实体框架和 MyIsam 表的问题。

我的生产数据库仅包含 MyIsam 表。通常使用像 UserId 这样的主键,然后是自动递增的辅助 KeyId。

由于 InnoDb 中不允许使用辅助自动增量键,并且在转换之前需要做很多工作才能摆脱它们,所以我正在考虑将 MyIsam 表与 Entity Framework 一起使用。

问题是,我该如何设置?在将表添加到 EF 模型时,如果没有外键,则不会有任何关系。我试过手动添加关联,但总是有一些错误。使用辅助自动增量键时这甚至可能吗?

如果有人可以尝试帮助我,我将不胜感激。

谢谢

/安德烈亚斯