小编Dav*_*der的帖子

在同一个事务中执行读取和写入

我正在尝试在我的应用程序中实现事务。我只是想像 BeginTransaction() 文档中显示的示例一样实现它。

Public Shared Sub Process(wwid As String, trade_id As Integer, disposition As Boolean)

    Dim q As String
    Dim cmd, cmd_select As SqlCommand
    Dim reader As SqlDataReader
    Dim trans As SqlTransaction

    Dim user_id As Integer = User.CheckAuthentication(wwid)
    If user_id > 0 Then
        Using conn As New SqlConnection(CNGDB)
            conn.Open()
            '1. ReadUncommitted
            '2. ReadCommitted
            '3. RepeatableRead
            '4. Serializable
            '5. Snapshot
            trans = conn.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted)
            Try
                q = "UPDATE Trades SET Disposition = @disposition, FinalizedAt = @finalized_at" & _
                    " WHERE …
Run Code Online (Sandbox Code Playgroud)

sql-server ado.net transaction azure-sql-database

8
推荐指数
1
解决办法
4893
查看次数

MAX(Version) 的子选择需要很多分钟,尽管只有 ~20K 记录

我有一个非常复杂的数据模型。如果不解释正在建模的内容,我将无法理解大多数 SQL 示例,因此我将尝试进行解释。

Mainlines -> Releases -> Overlays -> Calibrations <- Parameters

Calibrations 是 Mainline-Release-Overlay 链和 Parameters 的子节点。这是我想退货的套装。

现在,复杂性在于——为了节省空间——我们存储基本 Mainline 的校准,然后只存储在发布和覆盖级别发生更改时的差异。这会产生大约 16K 行的“基本”校准集,然后每个版本有几百个更改,每个覆盖可能只有几个更改。发生参数删除。为了跟踪这一点,校准有一个状态字段 (tinyint),它被设置为 1 以进行删除。

叠加层依次进行版本控制。因此,要获得完整的“校准”,我们需要查询校准表以获取最新版本的参数数据,直至特定的叠加版本号。参数元数据可能会改变,但名称保持不变,因此这些校准可能指的是不同版本的参数,尽管名称相同。

到目前为止,以下内容已经完美且即时地运行(有以下注意事项):

SELECT c.Parameter_ParameterID, p.Designation AS Name, c.Data, o.Version
 FROM Calibrations c, Parameters p, Overlays o, Releases r
 WHERE r.Mainline_MainlineID = 9
    AND o.Release_ReleaseID = r.ReleaseID
    AND c.Overlay_OverlayID = o.OverlayID
    AND c.Parameter_ParameterID = p.ParameterID
    AND o.Version =
        (SELECT MAX(o1.Version)
            FROM Parameters p1, Calibrations c1, Overlays o1, Releases r1
            WHERE r1.Mainline_MainlineID = 9
            AND o1.Release_ReleaseID …
Run Code Online (Sandbox Code Playgroud)

performance sql-server sql-server-2012 greatest-n-per-group query-performance

5
推荐指数
1
解决办法
882
查看次数