我需要使用DbTransactions(在单个数据库上),但我不确定如何确保它在部署到生产环境时继续工作.
应用程序能够使用SQL DbTransactions有哪些要求?它们是否在SQLServer中默认允许(与MSDTC的交易是什么)?
我试图找出实现队列系统的难度.我知道如何实现一个基本队列,所以我将解释一下我之后的一些背景:
我将实现一个将放置消息的队列,这将来自多个用户,消息将被安排在用户定义的时间发布(允许多次出现,精确度为Minutes,从UI角度来看,我将限制:"每分钟或每小时"出现,但ID仍然能够处理这个系统).
这是我的问题所在:最终我可能处于某种情况(也许不是)当前需要发布许多消息的情况,我希望有几个进程(多个脚本实例)运行来获取[x,10,25]一次从队列中发送的消息数并处理它们.问题是:如何执行此操作以便每个实例处理唯一的消息(不处理已由另一个实例处理的内容)?我担心当前的连接,如何锁定记录,以及我可能没有想到的任何其他事情.
我将使用的技术是PHP和MySQL.我正在寻找上述的一些解决方案,我应该在我的搜索,真实世界的例子,想法,评论和想法中使用的术语?
谢谢大家!
我遇到的一个解决方案是使用Amazon Simple Queue Service ...它承诺独特的消息处理/锁定http://aws.amazon.com/sqs/
我有一个项目,这将是写重而不是重读.我想知道是否有人对开源DBMS设置有任何快速写入的建议?
它也不一定是关系型DBMS; 我愿意接受建议.
我经常是SQL Server Management Studio用户.有时我会遇到更新或删除查询要运行的情况,但我担心我的一些拼写错误或逻辑错误会导致我对表进行不必要的大规模更改(比如更改1000行时)我打算改变2).
在过去,我只是握紧拳头并屏住呼吸,但后来我想知道在遇到可能的灾难性查询之前我是否可以做这样的事情:
1)在下面运行
begin transaction
(my update/insert/delete statement I want to run)
Run Code Online (Sandbox Code Playgroud)
2)如果我满意,请致电:
commit transaction
Run Code Online (Sandbox Code Playgroud)
3)或者,如果我犯了什么罪,请致电:
rollback transaction
Run Code Online (Sandbox Code Playgroud)
我的想法是否合理,还是我错过了一些基本的东西?我知道我总是可以恢复我的数据库,但与上面相比,这似乎有些过分.
EDITS:
1)我同意在做任何事情之前在测试站点上进行测试,但是仍然有可能在生产服务器上发生问题.也许某些条件在测试服务器上是正确的,这在生产中是不正确的.
2)我也习惯先写我的地方,或者先用我的地方做一个选择,以确保我隔离正确的行,但同样,总会出现问题.
我第一次使用SQL Server 2005,过去主要使用MySQL.我习惯使用auto_increment在表中创建唯一的ID.
无论如何......我正在使用java应用程序,需要执行以下操作.假设我的表有两列:itemID(int)和itemValue(int).
这基本上就是我想要做的(dbconn方法只是伪代码):
dbconn.execSQL("begin tran");
int nextID = dbconn.execSQLSelect("select max(itemID)+1 from itemTable");
dbconn.execSQLInsert("insert into itemTable values " + nextID + ", 1000");
dbconn.execSQL("commit tran");
Run Code Online (Sandbox Code Playgroud)
begin/commit tran语句是否会处理第2行和第3行之间可能的竞争条件?或者是否有一些TSQL相当于MySQL的"锁表",我需要做什么?
也许这个问题有点牵强,但我会试一试..
我能以某种方式连接到正在进行的交易吗?
问题是我有[C++程序A]在数据库上执行各种操作,然后调用[C#Program B]在同一个数据库上执行更多操作.
我希望两个程序中的所有操作都在一个事务中运行 - 因此允许回滚.
它有可能吗?
谢谢.
我正在编写一个脚本来将CSV文件导入到我的数据库中的现有表中.我决定使用PHP和INSERT/UPDATE语句自己进行插入/更新操作,而不是使用MySQL的LOAD INFILE命令,我有充分的理由这样做.
我想要做的是模拟插入/更新操作并将结果显示给用户,然后为他们提供确认这是正常的选项,然后将更改提交到数据库.
我正在使用InnoDB数据库引擎来支持事务.不确定这是否有帮助,但是考虑插入/更新,查询数据,显示给用户,然后提交或回滚事务?
任何建议将不胜感激.
我正在使用Spring 3和Hibernate 3.5,我没有让我的事务在测试环境中回滚,这让我担心它们也不会在生产中回滚.
测试类:
@ContextConfiguration(loader = MyConfigurationLoader.class)
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
public class DashTemplateRepositoryTest extends AbstractMulitpleDataSourceSpringContextTests {
@Autowired
DashTemplateRepository dashTemplateRepository;
@Test
public void testSaveCategory() {
int initialCount = getCategoryCount();
Category c = new Category();
c.setName("mynewcategory");
dashTemplateRepository.save(c);
assertEquals(initialCount + 1, getCategoryCount());
}
}
Run Code Online (Sandbox Code Playgroud)
其中扩展了自定义类:
public abstract class AbstractTransactionalTemplateTests extends AbstractTransactionalJUnit4SpringContextTests {
protected SimpleJdbcTemplate simpleJdbcTemplate;
@Autowired
DashTemplateRepository dashTemplateRepository;
@Resource(name = "dashDataSource")
public void setDataSource(final DataSource dataSource) {
this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);
} ..snip...
Run Code Online (Sandbox Code Playgroud)
更新:我需要执行simpleJdbcTemplate插入,因为我有多个dataSources,默认情况下这个测试类无法处理,我无法找到弹簧支持的解决方案,但在Spring论坛上,贡献者发布了这个解决方法.在我提取这个超类之前存在回滚问题.我假设问题比这更基本,hibernate似乎没有意识到事务管理器,有什么办法可以证明这一点吗?
数据源Bean:
<bean id="dashDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" …Run Code Online (Sandbox Code Playgroud) 根据信用卡交易,drupal提供的最佳安全功能(设置,模块)是什么?您是否有任何其他预防技巧.如果可能发布重要和必要的设置点也请.
我正在使用PowerShell交易; 这将创建一个具有Serializable的IsolationLevel的CommittableTransaction.问题是,当我在此上下文中执行事务时,除了执行事务的连接之外的任何连接上,除了事务影响的表之外,所有SELECT都被阻塞.我可以在交易中执行获取,但不能在其他任何地方执行.这包括SSMS和其他cmdlet执行.这是预期的行为吗?好像我错过了什么......
PS脚本:
Start-Transaction
Add-Something -UseTransaction
Get-Something #hangs here until timeout
Add-Something -UseTransaction
Undo-Transaction
Run Code Online (Sandbox Code Playgroud) transactions ×10
sql-server ×5
sql ×3
c# ×2
innodb ×2
mysql ×2
php ×2
credit-card ×1
database ×1
drupal ×1
hibernate ×1
java ×1
junit ×1
powershell ×1
process ×1
security ×1
spring ×1
t-sql ×1