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

mysql - MySQL 中插入期间的表级锁定锁定是什么?

我读过很多次,MySQL 将在插入期间对 MyISAM 表执行表级锁定。如果该锁仅用于序列化插入/删除命令,我可以。无论如何,插入在我的网站上非常罕见。

但是,在插入命令完成之前,该锁是否也会阻止所有 Select 查询?

0 投票
3 回答
4329 浏览

mysql - 将表从 MyISAM 更改为 InnoDB 会使系统变慢

您好我正在使用 Mysql 5.0.x

我刚刚将很多表从 MyISAM 更改为 InnoDB

使用 MyISAM 表大约需要1 分钟来安装我们的数据库使用 InnoDB 大约需要15 分钟来安装相同的数据库

为什么 InnoDB 需要这么长时间?

我能做些什么来加快速度?

数据库安装执行以下步骤

1) 删除架构

2) 创建架构

3) 创建表

4) 创建存储过程

5) 插入默认数据

6)通过存储过程插入数据

编辑:

插入默认数据需要大部分时间

0 投票
1 回答
710 浏览

php - mysqli_use_result() 和并发

根据mysqli_use_result的文档

如果在客户端执行大量处理,则不应使用 mysqli_use_result(),因为这将占用服务器并阻止其他线程更新从中获取数据的任何表。

这仅适用于 myISAM 表还是适用于 InnoDB?

0 投票
1 回答
1826 浏览

mysql - 如何在不锁定的情况下将索引应用于 MySQL / MyISAM 表?

有一个生产表,其中一个非常关键的列(日期)缺少索引,有什么方法可以在不影响用户的情况下应用所述索引?

该表目前每秒大约有 5-10 次插入,因此全表锁定已失效;将这些插入重定向到替代表/数据库,即使是暂时的,也被拒绝(出于公司政治原因)。还有其他方法吗?

0 投票
2 回答
1855 浏览

mysql - MySQL - 并发选择 - 一个客户端等待另一个?

我有以下情况:

我有一个包含大约 400 万行的特定 MyISAM 表的数据库。我使用存储过程(MySQL 5.1 版),特别是使用存储过程来根据各种条件搜索这些行。这个表上有几个索引,通过这个存储过程的查询通常非常快(<1s)。基本上,我使用准备好的语句并在此搜索 sp 中创建和执行一些动态 SQL。执行准备好的语句后,我执行“DEALLOCATE PREPARED stmt;”

大多数查询在一秒钟内运行(我使用 LIMIT 随时只获取 15 行)。但是,有一些罕见的查询需要更长时间才能运行(比如 2-3 秒)。我已尽我所能优化搜索表。

我开发了一个 Web 应用程序,我可以在一秒钟内在我的开发机器上运行并查看快速查询的结果。

但是,如果我打开两个浏览器实例并同时进行搜索(针对开发机器),一个具有运行时间较长的查询,另一个具有更快的查询,结果会同时返回,即看起来好像快速查询在返回结果之前等待较慢的查询完成。即两个查询都需要 2-3 秒...

是否有一个原因?因为我认为 MyISAM 处理 SELECTS 彼此无关,而目前这不是我正在经历的行为......

提前致谢!蒂姆

0 投票
5 回答
7170 浏览

mysql - 是什么导致 MyISAM 腐败?

我听说 MyISAM 表可能会损坏,哪种操作最有可能损坏它们,以及如何安全地修复所述损坏。

0 投票
2 回答
876 浏览

mysql - 将 php4/mysql4 迁移到 php5/mysql5:切换到 InnoDB?

我有一个旧的 Web 应用程序 php4/mysql4(MyISAM,db 包含一些 cms、一些用户数据、一些日历应用程序)。现在我要迁移到一个带有 php5/mysql5 的新服务器。

迁移 mysql 数据库时是否应该更改为 InnoDB?- 预期的优势/劣势/风险?- MyISAM 是被弃用还是有一天会被弃用?或者我可以安全地保留它吗?- 我听说MyISAM 容易损坏,InnoDB 呢,它抗崩溃吗?- InnoDB 是否更容易或更安全地备份和恢复?

当我改变(破坏 SQL 查询)或破坏逻辑(因为改变了锁定机制)时,它会破坏我的代码吗?如果是这样,典型的场景是什么?

(对于 php 问题,我创建了一个不同的问题:Migrating php4/mysql4 to php5/mysql5: expected php issues?

0 投票
1 回答
385 浏览

mysql - 两个进程的 MySQL MISAM 并发问题

我可能忽略了一些简单的事情,但几周来我一直试图了解这里出了什么问题,我需要一双新的眼睛。

我有一个处理 Paypal 付款通知的 CGI 应用程序。当有人订阅时,我实际上得到了一个订阅 IPN,然后是一个支付 IPN。On 就在另一个之后,所以我启动了两个 CGI 进程。我为每个日志创建一个单独的日志,并且时间戳是相同的(时间戳的分辨率 - 秒)。

CGii 应用程序旨在为新订户创建用户帐户,然后支付 IPN 将信息添加到新创建的帐户中。很简单。

问题是第二个 IPN 无法找到该帐户。我认为这是因为它在第二个 IPN 去寻找它时已经完成创建,所以我将第二个 IPN 延迟了 5 秒。

现在时间戳显示为第一个 IPN 创建帐户的函数在第二个 IPN 开始查找它之前已返回,这意味着在发出第一个 SELECT 之前插入已完成。没运气。

我想知道这是否是缓存问题: http ://dev.mysql.com/tech-resources/articles/mysql-query-cache.html 但我不这么认为。

我在这里根本没有使用 TRANSACTIONS,但是在第二个 CGI 应用程序发出它的 SELECT 之前,我没有释放第一个 CGI 应用程序的句柄,但这应该无关紧要。我想我可以尝试发布一个我可能忽略了一些简单的事情,但我已经尝试了解这里出了什么问题了几个星期,我需要一双新的眼睛。

我有一个处理 Paypal 付款通知的 CGI 应用程序。当有人订阅时,我实际上得到了一个订阅 IPN,然后是一个支付 IPN。On 就在另一个之后,所以我启动了两个 CGI 进程。我为每个日志创建一个单独的日志,并且时间戳是相同的(时间戳的分辨率 - 秒)。

CGii 应用程序旨在为新订户创建用户帐户,然后支付 IPN 将信息添加到新创建的帐户中。很简单。

问题是第二个 IPN 无法找到该帐户。我认为这是因为它在第二个 IPN 去寻找它时已经完成创建,所以我将第二个 IPN 延迟了 5 秒。

现在时间戳显示为第一个 IPN 创建帐户的函数在第二个 IPN 开始查找它之前已返回,这意味着在发出第一个 SELECT 之前插入已完成。没运气。

我想知道这是否是缓存问题: http ://dev.mysql.com/tech-resources/articles/mysql-query-cache.html 但我不这么认为。

我没有使用 TRANSACTIONS,但我没有尝试在 INSERT 之后发出 COMMIT。

我在这里想念什么?

0 投票
1 回答
992 浏览

mysql - 使用 JMeter 在 Web 应用程序中测试并发和/或事务完整性

我对在数据库中使用多个线程相当陌生(我的大部分职业生涯都花在了前端)。

今天我尝试测试我编写的一个简单的 php 应用程序,该应用程序使用 ISAM 表模拟使用表锁定的事务将值存储在 mysql 数据库中。

我刚刚写了一篇关于这里的程序的博客文章:

使用 JMeter 进行测试

从我的结果来看,我的简单 php 应用程序似乎保持了事务完整性(从我的 csv 文件中的数据与我从数据库中重新提取的数据相同):

CSV 文件:

al 的 alt csv 用于 bl 的 alt csv

JMeter测试运行后查询两个用户的数据:

alt alt

我是否正确地假设事务数据完整性是完整的?

你如何测试并发性?

0 投票
6 回答
6001 浏览

sql - MySQL MyISAM 表的性能......非常缓慢,非常缓慢

我有一个表结构,可以总结如下:

有 3600 行

参考页组;有 10000 行;每个页面组可以有 1-700 行之间的任何内容;数据列的类型为 mediumtext,该列每行包含 100k - 200kbytes 数据

参考页面;大约有 300,000 行;每页可以有大约 1-50 行

上面的结构非常简单,问题是从用户数据到页面组的连接非常非常慢,即使我已经索引了所有应该索引的列。为此类联接(userdata inner_join page inner_join pagegroup)运行查询所需的时间超过 3 分钟。考虑到我根本没有选择数据列这一事实,这非常慢。查询时间过长的示例:

请帮助解释为什么需要这么长时间以及我能做些什么来使它更快。

编辑#1

解释以下乱码返回:

编辑#2

故事的道德启示

如果遇到诸如此类的性能问题,请将中/长文本列保留在单独的表中。