Mysql 使用JMeter测试web应用程序中的并发性和/或事务完整性

Mysql 使用JMeter测试web应用程序中的并发性和/或事务完整性,mysql,concurrency,transactions,myisam,data-integrity,Mysql,Concurrency,Transactions,Myisam,Data Integrity,我对在数据库中使用多个线程相当陌生(我职业生涯的大部分时间都花在前端) 今天,我尝试测试了一个简单的php应用程序,该应用程序使用ISAM表模拟使用表锁定的事务,将值存储在mysql数据库中 我刚刚在这里写了一篇关于这个过程的博文: 从我的结果来看,我的简单php应用程序似乎保持了事务完整性(从我的csv文件中的数据可以看出,这些数据与我从数据库中重新提取的数据相同): CSV文件: JMeter测试运行后两个用户的数据查询: 事务数据完整性完好无损的假设正确吗 如何测试并发性?为什么不使

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

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

我刚刚在这里写了一篇关于这个过程的博文:

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

CSV文件:

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

事务数据完整性完好无损的假设正确吗


如何测试并发性?

为什么不使用InnoDB并在没有手动表锁的情况下获得相同的效果

还有,你在防范什么?考虑两个用户(比尔和史提夫):

  • 账单加载记录1234
  • 史蒂夫载入记录1234
  • Steve更改记录1234并提交
  • Bill稍等片刻,然后更新陈旧记录1234并提交。这些变化比比尔的大得多
  • 表锁定不提供比本机MyISAM表锁定更高的数据完整性。当需要停止数据损坏时,MyISAM将以本机方式锁定表文件

    事实上,在MyISAM上使用InnoDB的原因是它将执行行锁定而不是表锁定。它还支持事务。对不同记录的多个更新不会相互阻止,对多个记录的复杂更新将被阻止,直到事务完成

    您需要考虑两次更新同一条记录的可能性。如果可能的话,表/行锁定不会阻止第二次更新,它只会推迟到第一次更新完成

    编辑


    根据我的记忆,MyISAM对插入有一种特殊的行为。插入时根本不需要锁定表,因为它只是附加到表的末尾。对于具有唯一索引或非自动递增主键的表,这可能不是真的。

    hmm,很有趣……所以我还没有解决这个问题。。。我知道MyISAM表的局限性,但不幸的是,我使用的主机不支持InnoDB。。。是的,我可以在我的主页上安装所有这些东西…php,mysql等等…我可能应该这样做,这样我就可以真正测试它了。谢谢你的洞察力!。。。此外,应用程序实际上不做任何更新,它只做插入和读取(这是一个非常简单的应用程序…),希望这意味着它会好起来…我在做插入之前做一个选择,因为其中一个表不会自动递增(它有一个由两个字段组成的复合键);因此,您必须在插入新记录之前对表进行选择,以确定其中一个键控字段的最大id。复合键的另一部分也是外键。那么,您可以随时关闭表锁定代码并运行jmeter测试来验证相同的结果。。