具有多个线程的事务和锁定
Transaction and Locking with multiple threads
Hi以下是问题场景:
我正在使用MYSQL(Innodb引擎(,我的一个应用程序(C++/MYSQLCAPI(正在进行以下操作:
启动交易
截断my_table
将Data infile加载到表my_table中
如果上述命令[truncate and load]都成功,则COMMIT
其他回滚
现在是另一个应用程序(C++/MYSQLCAPI(,它通过以下命令每秒读取此表。
从my_table中选择*
错误:在这次读取尝试中,有时它会得到0个数据,这可能是什么原因
CREATE TABLE new LIKE real;
load `new` by whatever means
if something went wrong, don't do the next two steps.
RENAME TABLE real TO old, new TO real;
DROP TABLE old;
这避免了您提到的问题,以及许多其他问题。特别是,它不需要特殊的交易处理;CCD_ 1是原子的并且非常快。
您看到的是一个空表,因为truncate表有一个隐式提交。如果您需要更改事务中的整个表,您可以使用delete然后insert,或者尝试此答案中提供的重命名解决方案
相关文章:
- 如何找到锁定Linux futex的C++行
- G锁定铸造到基础上会释放模拟行为
- 如何检查线程是否锁定
- 如何在C++中找到active directory中禁用和锁定的窗口帐户
- 我应该在锁定TBitmap画布后解锁它吗
- C++ 11 中的锁定是否保证访问数据的新鲜度?
- 在两个线程上读/写 64 位,无互斥/锁定/原子
- 如何在实时应用程序中锁定线程
- 在 lambda 中锁定 std::shared_ptr 的复制操作
- 使用简单两相锁定的并发程序
- 锁定来自其他线程的类成员
- 他们如何将红外锁定像素转换为镜头前方 1m 的正常平面上的位置
- 同一互斥锁顺序上的锁定和解锁是否一致?
- 共享内存的升压容器是否实现锁定?
- 在C++事务之间存储大量字符数据的有效方法
- 当只有一个线程主要使用该对象而其他线程很少使用它时,如何最小化该对象的互斥锁锁定?
- 如何在 x86 处理器上实现"锁定添加"
- MCS 锁定实现的问题
- 乐观读取并使用 C/C++锁定 STM(软件事务内存)
- 具有多个线程的事务和锁定