问题标签 [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 投票
4 回答
1344 浏览

mysql - 定期将数据加载到表中的最佳方法是什么

我有一个带有静态表的数据库,需要每周从 CSV 更新。表是 Mysql MyISAM 并且静态我的意思是它们用于只读(显然从 CVS 更新时除外)。

大约有 50 个表,每周要重新加载大约 200mb 的数据。

我可以考虑3种方式:

  1. 截断表
  2. 从文件加载数据

或者

  1. 为每个表创建一个临时表
  2. 在那里加载数据
  3. 截断(或删除行?)原始表
  4. 从临时表中插入原始表选择 *。

或者

  1. 创建 table_new 并在那里加载数据
  2. 将原始表重命名为 table_old(或完全删除表)
  3. 将 table_new 重命名为原始表

你认为最有效的方法是什么?

0 投票
3 回答
117 浏览

mysql - 跨多个 MySQL 表更改字段

场景:我的用户希望能够更改他们的用户名(不幸的是,我在启动站点时没有考虑添加此功能),但 MySQL 数据库有 110 个表。

我是否只需要编写一个执行 110 个查询的脚本来更新每个表中的用户名(并记住在添加新表时更新脚本),还是有办法链接所有表中的字段,所以更新一个表中的用户名会更新所有其他表中的用户名吗?

0 投票
4 回答
4045 浏览

mysql - 将 MyISAM 转换为 InnoDB。有利?结果?

我们正在运行一个社交网站,记录每个成员的行为(包括访问其他成员的页面);这涉及到数据库的大量写入。这些操作存储在 MyISAM 表中,由于某些事情开始对 CPU 造成负担,我的第一个想法是 MyISAM 的表锁定导致了 CPU 的这种压力。

  • 只有读取和写入,此表没有更新。我认为该表的读写平衡约为 50/50,因此 InnoDB 会是更好的选择吗?
  • 如果我想将表更改为 InnoDB 并且我们不使用外键约束、事务或全文索引 - 我需要担心什么吗?
0 投票
2 回答
5030 浏览

mysql - 是否可以在不使用任何读锁的情况下在 mysql 中发出选择查询?

似乎 mysql 选择内容(与例如计数相反)查询总是至少在 myisam 表上占用一个表读取锁,在 innodb 表上占用一个行读取锁。有没有办法在 mysql 中发出选择内容查询(如果需要,我可以更改表类型)而无需获取任何锁?我不介意返回的数据是否不一致,因为我会将它用于搜索索引。

0 投票
4 回答
7326 浏览

mysql - 加快从 MyISAM 到 InnoDB 的转换

我有一个 MySQL 1.5 GB MyISAM 表(1.0 GB 数据,0.5 GB 索引)正在生产中,我即将转换为 InnoDB。

由于该表用于生产,因此我希望尽可能缩短停机时间。

我的问题:

  • 应该调整哪些 MySQL 配置选项以加快速度ALTER TABLE table_name ENGINE=InnoDB;

  • 为了加快生产数据库表从 MyISAM 到 InnoDB 的转换,可以使用哪些其他技巧?

0 投票
2 回答
4243 浏览

mysql - 一个数据库中的 MyISAM 和 InnoDB 表

我有一个包含大约 30 个表的数据库,其中 5 个表是写密集型的。

我正在考虑

  1. 将 5 个写入密集型表转换为使用 InnoDB 引擎,其余的保留在 MyISAM 引擎上

  2. 将所有表转换为使用 InnoDB 引擎。

我想知道哪种方法更好?

更加具体

我想在 MyISAM 引擎上保留一些表的原因是其中一些有大约 1,000,000 行。我不确定转换为 InnoDB 后这些表上的“SELECT COUNT(*)”之类的查询会有多慢。

我没有做过测试。在开始转换之前,我更喜欢从你们任何人那里得到一些建议。

0 投票
2 回答
618 浏览

mysql - 在 MySQL 中使用 auto_increments 连接 MyISAM 表

虽然我已经写了很长时间的 php,但它始终是我自己学会的一项技能,而且我刚刚遇到了关于表连接的小信心危机!

假设一个 MySQL 数据库auth包含 MyISAM 表userspermissions

为了以多对多(或一对多)的形式加入这些表,我一直使用这样的桥接表:

(我知道 innoDB 能够建立关系,但它也更复杂并且占用更多内存,所以出于 q 我想留在 myISAM 的目的)

我的特殊问题是:使用自动递增键加入表是否明智,还是应该生成自己的附加键?

我知道如果表损坏并且我必须重建或者如果我开始镜像到两个数据库并且密钥不同步,则可能会出现问题。

我也知道,如果我为每一行生成一个唯一的哈希(用于连接),那么在每次数据插入之前生成一个哈希并检查它是否是新的都会产生开销。

其他人是如何做到的?这些问题是您在实际情况中看到的吗?

谢谢你的时间!

亚当

0 投票
4 回答
1795 浏览

mysql - MySQL错误?“SHOW TABLE STATUS”报告导入期间行数波动

我正在将 410 万条记录导入离线系统,以对我们数据库的一个子集进行一些分析。在运行导入时,我正在尝试使用以下方法检查其进度:

奇怪的是......在不同的时间,我看到Rows. 我希望它只会上涨。以下是输出示例:

这种行为有解释吗?有没有更好的方法来检查我的导入进度?

运行以下版本: 服务器版本:5.0.32-Debian_7etch11-log Debian etch 发行版


编辑:

这是DDL。这是一个 MyISAM 表:

提前致谢,

-aj

0 投票
1 回答
3585 浏览

mysql - 将数据和索引数据保存在内存中 - InnoDB vs. MyISAM

假设一个数据库由 1 GB 的数据和 1 GB 的索引数据组成。

为了最小化磁盘 IO 并因此最大化性能,我想为 MySQL 分配内存,以便包括索引在内的整个数据集可以保存在 RAM 中(假设机器有大量的 RAM)。

InnoDB 参数innodb_buffer_pool_size用于指定 InnoDB 用于缓存其表的数据和索引的内存缓冲区的大小。(注意:内存用于数据索引。)

MyISAM 参数key_buffer_size用于指定 MyISAM 用于缓存其表的索引的内存缓冲区的大小。(注意:内存用于索引。)

如果我希望 2 GB 数据库(1 GB 数据和 1 GB 索引)适合 InnoDB 下的内存,我只需innodb_buffer_pool_size2GB. 这两个千兆字节将同时保存数据和索引。

但是,当将 MyISAM 键设置key_buffer_size为该空间时,2GB该空间将用于索引,而不是用于数据。

我的问题是:

  • MyISAM 的“数据缓冲区大小”(不是索引数据)可以显式配置吗?
  • MyISAM 什么时候从磁盘读取表数据(不包括索引数据),什么时候从内存中读取?
0 投票
2 回答
209 浏览

mysql - 将表转换为 InnoDB 时应该注意哪些并发症?

我在 Liferay 安装突然(没有任何代码修改)失败并出现“重复 id”错误时遇到问题。我们已经确定可以通过将 mysql 引擎更改为 InnoDB 来解决该问题。

我现在正在计划改变,但我不确定这个过程中可能会出现什么并发症。

我检查了这个问题中提到的全文索引

将表从 MyISAM 转换为 INNODB

我还有其他可能的问题吗