(或者,理想情况下,PHP PDO)是否MySQL
有某种方式来模拟事务而不实际提交它们?(我是否可以让MySQL
PDO 像插入/删除/更新数据一样,而不实际提交任何INSERT
, DELETE
orUPDATE
语句?)
“插入”的数据(人员 ID、企业 ID、电话号码 ID、电话类型 ID 等)应存储在某处,以便在需要时可以检索它们。在测试/开发期间不应将数据写入主数据库,只有当脚本完成并准备好用于生产时。
询问的原因是:在开发数据复制/传输脚本时,AUTO_INCREMENT
在运行更改的导入脚本之前将测试数据从表中删除并重置是不方便的。
或者,我应该...
- 在脚本开始时在内存中创建我的表并在最后删除它们?
- 复制数据库(创建从属)以用于开发并在每次修改脚本时替换从属?
(大概会导入1000-2000人,每个人最多15个电话号码,每个人1个业务,每个人最多10个角色。)
在不实际写入数据的情况下进行 SQL 语法检查的最佳方法是使用引擎
BLACKHOLE
,它是 MySQL 等效于 UNIX /dev/null的引擎。顾名思义,它是一个接受所有(但语法无效)但不存储数据的引擎。非常适合测试和令人难以置信的插入性能:-)除此之外,人们通过在单独的实例上创建具有实时数据的从站来测试设置。
小心 InnoDB 上非常动态的数据和大型未提交事务,因为这可能会根据配置(
innodb_file_per_table = 0
、撤消区域等)和性能问题(回滚在 InnoDB 中非常昂贵)在生产中产生大量未使用的间隙。像这样的东西?你明确可以禁用自动提交模式http://php.net/manual/en/pdo.begintransaction.php