sql server 说明下 sys.dm_tran_version_store
时间: 2023-12-08 12:06:14 浏览: 35
sys.dm_tran_version_store是SQL Server中的一个动态管理视图(DMV),它提供了有关版本存储中的事务版本的信息。
版本存储是SQL Server用于实现多版本并发控制(MVCC)的一种机制。MVCC是指多个事务可以同时读取数据库中的同一行,而不会相互干扰。每个事务读取的数据都是该行在事务启动时的一个快照。
sys.dm_tran_version_store提供了以下信息:
1. database_id:版本存储所属的数据库ID
2. object_id:版本存储所属的对象ID
3. index_id:版本存储所属的索引ID
4. partition_id:版本存储所属的分区ID
5. rowset_id:版本存储所属的行集ID
6. version_ghost_record_count:版本存储中幽灵记录的数量
7. version_ghost_record_size_in_bytes:版本存储中幽灵记录的总大小
8. version_record_count:版本存储中事务版本的数量
9. version_record_size_in_bytes:版本存储中事务版本的总大小
使用sys.dm_tran_version_store可以帮助我们了解版本存储的使用情况,从而优化数据库的性能。但是需要注意的是,版本存储是SQL Server内部实现的机制,不应该直接操作版本存储。
相关问题
# the equivalent utility of line transfering self.ALPHA_tran = 5.0
The line you provided appears to be a comment in Python code, indicating the purpose of a variable named `ALPHA_tran`. However, without additional context or code, it is difficult to determine the exact meaning of this variable or its purpose in the program.
如何从字符串 "INSERT OVERWRITE TABLE HDQRY.TEMP_SZQQ2020_19072_XT SELECT T.tran_cusm_no ,'汇出' AS TRAN_TYPE FROM ORAMIS.CTIS_TXN_TIF_BAS_P_F T WHERE T.rel_payee_name REGEXP '信托' GROUP BY T.tran_cusm_no UNION ALL SELECT T.tran_cusm_no ,'汇入' AS TRAN_TYPE FROM ORAMIS.ctis_txn_tif_bas_p_f T WHERE T.rel_pay_name REGEXP '信托' GROUP BY T.tran_cusm_no ;--EOF|STEP-1(INSERT-HDQRY.TEMP_SZQQ2020_19072_XT OK)" 中匹配出 "SELECT T.tran_cusm_no ,'汇出' AS TRAN_TYPE FROM ORAMIS.CTIS_TXN_TIF_BAS_P_F T WHERE T.rel_payee_name REGEXP '信托' GROUP BY T.tran_cusm_no" 和 "SELECT T.tran_cusm_no ,'汇入' AS TRAN_TYPE FROM ORAMIS.ctis_txn_tif_bas_p_f T WHERE T.rel_pay_name REGEXP '信托' GROUP BY T.tran_cusm_no"
你可以使用正则表达式来匹配所需字符串。以下是匹配的正则表达式和代码:
```python
import re
s = "INSERT OVERWRITE TABLE HDQRY.TEMP_SZQQ2020_19072_XT SELECT T.tran_cusm_no ,'汇出' AS TRAN_TYPE FROM ORAMIS.CTIS_TXN_TIF_BAS_P_F T WHERE T.rel_payee_name REGEXP '信托' GROUP BY T.tran_cusm_no UNION ALL SELECT T.tran_cusm_no ,'汇入' AS TRAN_TYPE FROM ORAMIS.ctis_txn_tif_bas_p_f T WHERE T.rel_pay_name REGEXP '信托' GROUP BY T.tran_cusm_no ;--EOF|STEP-1(INSERT-HDQRY.TEMP_SZQQ2020_19072_XT OK)"
matches = re.findall(r"(SELECT\s+.*?GROUP\s+BY\s+\w+\.\w+)", s, re.IGNORECASE)
print(matches)
```
输出结果为:
```
["SELECT T.tran_cusm_no ,'汇出' AS TRAN_TYPE FROM ORAMIS.CTIS_TXN_TIF_BAS_P_F T WHERE T.rel_payee_name REGEXP '信托' GROUP BY T.tran_cusm_no", "SELECT T.tran_cusm_no ,'汇入' AS TRAN_TYPE FROM ORAMIS.ctis_txn_tif_bas_p_f T WHERE T.rel_pay_name REGEXP '信托' GROUP BY T.tran_cusm_no"]
```
解释一下正则表达式:
- `(SELECT\s+.*?GROUP\s+BY\s+\w+\.\w+)`: 匹配以SELECT开头,以GROUP BY加至少一个单词字符加一个点号加至少一个单词字符结尾的字符串,其中SELECT和GROUP BY可以是大小写混合的,且.*?表示非贪婪匹配,即尽可能少的匹配字符。`\s+`表示匹配至少一个空格,`\w+\.\w+`表示匹配一个或多个单词字符加一个点号加一个或多个单词字符。
希望这个代码对你有所帮助!