我有一个存储 MD5 哈希的索引列。因此,该列将始终存储 32 个字符的值。无论出于何种原因,它都是作为 varchar 而不是 char 创建的。迁移数据库以将其转换为字符是否值得?这是在带有 InnoDB 的 MySQL 5.0 中。
MyISAM 如何比 InnoDB“更快”,如果
我正在开发一种产品,作为其操作的一部分,必须跟踪大量文件/目录。这个想法是将统计信息存储在数据库中,然后在启动时为每个文件创建监视。更改的文件将排队(在数据库中)以组同步到远程数据库。它们将按优先级顺序同步,数字介于 1-10 之间。
数据库的相关资料:
我发现了几个我认为可以工作的数据库,但我不确定哪个是最好的:
我认为 NoSQL 数据库将是这里的最佳解决方案,因为没有太多的关系逻辑在进行,并且总数据大小不会太大(例如 < 100 mb,接近 < 30 mb)。我确实看过 SQLite,因为它似乎很简单,可以嵌入到可安装的应用程序中。
由于这是面向最终用户的分布式应用程序而不是高负载服务器,因此数据库不必支持许多并发用户。这里的主要优先事项是找到一个模型最有意义的数据库。
那么问题来了,哪个数据库最适合这种情况?
另外,是否还有其他数据库对这样的应用程序更有意义?
由于 RAM 的限制,是否可以让 InnoDB 使用与 MyISAM 相同的索引而不是聚集索引,同时获得其并发性能的好处?
我很困惑我应该选择哪个 mysql 引擎(让我们谈谈最常用的:MyISAM 和 InnoDB)。
理论说:
当我创建一个表时,如果我想保持完整性并且我想加快通过“文本”进行搜索的查询,我应该总是牺牲一些东西吗?
如果需要,您如何决定使用哪种引擎
我不确定这个问题的答案是对还是错,因为我认为这在很大程度上取决于情况,但为了心理锻炼,我还是继续问吧:
我的数据库中有一个 MyISAM 表,它位于我的站点的中心。围绕它创建了许多参考表,还有许多其他表直接链接到该表中的行 ID。该表大约有 260k 行,有 28 个字段,其中大部分是 varchars 和 ints。我有大约 15 个索引(数据大约 70 MiB,索引大约 80 MiB)。每天可能有数百次写入,而读取数以万计。我的数据库位于 SSD 驱动器上。
现在我的问题是;将此表更改为 InnoDB 表是否有益?我正在努力扩展我的系统以包括 API 流量,这意味着该表甚至会被查询更多,我想确保一切运行尽可能顺利。因此,我有点倾向于将其转换为 InnoDB。但是,由于该表需要许多索引,我认为 MyISAM 可能会更有效地工作。谁能帮我下定决心?提前致谢1
我很久以前就添加了索引,并且我对 PHP 代码库进行了一些更改,因此可能有些索引已经过时,但总体而言;是的,它们都被使用了。我在表上运行了许多不同类型的查询。不同的查询,不同的索引。但是我在这里的主要问题不涉及表读取性能,而是它如何处理许多索引。InnoDB 索引与数据一起“离开”/存储,而不是 MyISAM 的密钥文件原则。我只是担心这可能会导致足够的性能下降不会超过表锁定问题。