AI编程助手
AI免费问答

SQLSERVER中KeyHashValue的作用(下)

  2016-06-07 15:45   1406浏览 原创
<span>1</span> <span>SELECT</span>   <span>%%</span>lockres<span>%%</span> <span>AS</span> <span>'</span><span>数据页的keyhashvalue</span><span>'</span> <span>FROM</span>  表名
<span>1</span> <span>DBCC</span> TRACEON(<span>3604</span>,<span>-</span><span>1</span><span>)
</span><span>2</span> <span>GO</span>
<span>3</span> <span>DBCC</span> PAGE(testhashkey,<span>1</span>,<span>126</span>,<span>3</span><span>) 
</span><span>4</span> <span>GO</span>
<span> 1</span> <span>USE</span><span> master
</span><span> 2</span> <span>GO</span>
<span> 3</span> <span>CREATE</span> <span>DATABASE</span><span> testhashkey
</span><span> 4</span> <span>GO</span>
<span> 5</span> 
<span> 6</span> <span>USE</span><span> testhashkey
</span><span> 7</span> <span>GO</span>
<span> 8</span> 
<span> 9</span> <span>--</span><span>------------------------------------------</span>
<span>10</span> <span>--</span><span>测试聚集索引</span>
<span>11</span> <span>CREATE</span> <span>TABLE</span><span> testcluster
</span><span>12</span> <span>    (
</span><span>13</span>       a <span>NVARCHAR</span>(<span>3800</span>) <span>NOT</span> <span>NULL</span><span> ,
</span><span>14</span>       b <span>INT</span> <span>NOT</span> <span>NULL</span>
<span>15</span> <span>    )
</span><span>16</span> <span>GO</span>
<span>17</span> 
<span>18</span> <span>--</span><span>这里一定要是唯一的</span>
<span>19</span> <span>CREATE</span> <span>UNIQUE</span>  <span>CLUSTERED</span> <span>INDEX</span> ucl <span>ON</span><span> testcluster(b)
</span><span>20</span> <span>GO</span>
<span>21</span> 
<span>22</span> <span>INSERT</span><span>  testcluster
</span><span>23</span> <span>SELECT</span>  <span>CAST</span>(<span>11</span> <span>AS</span> <span>VARCHAR</span>(<span>10</span>))<span>+</span><span>replicate</span>(<span>'</span><span>a</span><span>'</span>, <span>3500</span>),<span>1</span> <span>UNION</span> <span>ALL</span>
<span>24</span> <span>SELECT</span>  <span>CAST</span>(<span>22</span> <span>AS</span> <span>VARCHAR</span>(<span>10</span>))<span>+</span><span>replicate</span>(<span>'</span><span>a</span><span>'</span>, <span>3500</span>),<span>2</span>
<span> 1</span> <span>CREATE</span> <span>TABLE</span><span> DBCCResult (
</span><span> 2</span> PageFID <span>NVARCHAR</span>(<span>200</span><span>),
</span><span> 3</span> PagePID <span>NVARCHAR</span>(<span>200</span><span>),
</span><span> 4</span> IAMFID <span>NVARCHAR</span>(<span>200</span><span>),
</span><span> 5</span> IAMPID <span>NVARCHAR</span>(<span>200</span><span>),
</span><span> 6</span> ObjectID <span>NVARCHAR</span>(<span>200</span><span>),
</span><span> 7</span> IndexID <span>NVARCHAR</span>(<span>200</span><span>),
</span><span> 8</span> PartitionNumber <span>NVARCHAR</span>(<span>200</span><span>),
</span><span> 9</span> PartitionID <span>NVARCHAR</span>(<span>200</span><span>),
</span><span>10</span> iam_chain_type <span>NVARCHAR</span>(<span>200</span><span>),
</span><span>11</span> PageType <span>NVARCHAR</span>(<span>200</span><span>),
</span><span>12</span> IndexLevel <span>NVARCHAR</span>(<span>200</span><span>),
</span><span>13</span> NextPageFID <span>NVARCHAR</span>(<span>200</span><span>),
</span><span>14</span> NextPagePID <span>NVARCHAR</span>(<span>200</span><span>),
</span><span>15</span> PrevPageFID <span>NVARCHAR</span>(<span>200</span><span>),
</span><span>16</span> PrevPagePID <span>NVARCHAR</span>(<span>200</span><span>)
</span><span>17</span> <span>)
</span><span>18</span> 
<span>19</span> <span>TRUNCATE</span> <span>TABLE</span> <span>[</span><span>dbo</span><span>]</span>.<span>[</span><span>DBCCResult</span><span>]</span>
<span>20</span> 
<span>21</span> <span>INSERT</span> <span>INTO</span> DBCCResult <span>EXEC</span> (<span>'</span><span>DBCC IND(testhashkey,testcluster,-1) </span><span>'</span><span>)
</span><span>22</span> 
<span>23</span> <span>SELECT</span> <span>*</span> <span>FROM</span> <span>[</span><span>dbo</span><span>]</span>.<span>[</span><span>DBCCResult</span><span>]</span> <span>ORDER</span> <span>BY</span> <span>[</span><span>PageType</span><span>]</span> <span>DESC</span> 
<span>1</span> <span>select</span> <span>%%</span>lockres<span>%%</span> <span>AS</span> <span>'</span><span>数据页的keyhashvalue</span><span>'</span> <span>from</span> testcluster
<span> 1</span> <span>SET</span> <span>TRANSACTION</span> <span>ISOLATION</span> <span>LEVEL</span> <span>SERIALIZABLE</span>
<span> 2</span> <span>GO</span>
<span> 3</span> <span>BEGIN</span> <span>TRANSACTION</span>
<span> 4</span> <span>SELECT</span> b <span>FROM</span> <span>[</span><span>dbo</span><span>]</span>.<span>[</span><span>testcluster</span><span>]</span> <span>WHERE</span> <span>[</span><span>b</span><span>]</span><span>=</span><span>1</span>
<span> 5</span> <span>--</span><span>COMMIT TRAN</span>
<span> 6</span> 
<span> 7</span> <span>SELECT</span><span>  resource_type ,
</span><span> 8</span> <span>        resource_database_id ,
</span><span> 9</span> <span>        resource_description ,
</span><span>10</span> <span>        resource_associated_entity_id ,
</span><span>11</span> <span>        request_mode ,
</span><span>12</span> <span>        request_type ,
</span><span>13</span> <span>        request_status
</span><span>14</span> <span>FROM</span><span>    sys.dm_tran_locks
</span><span>15</span> <span>WHERE</span>   <span>[</span><span>resource_database_id</span><span>]</span><span>=</span><span>DB_ID</span>(<span>'</span><span>testhashkey</span><span>'</span><span>)
</span><span>16</span> <span>ORDER</span> <span>BY</span> <span>[</span><span>resource_type</span><span>]</span>
<span> 1</span> <span>USE</span><span> master
</span><span> 2</span> <span>GO</span>
<span> 3</span> <span>CREATE</span> <span>DATABASE</span><span> practice
</span><span> 4</span> <span>GO</span>
<span> 5</span> 
<span> 6</span> <span>USE</span><span> practice
</span><span> 7</span> <span>GO</span>
<span> 8</span> 
<span> 9</span> <span>--</span><span>只有聚集索引</span>
<span>10</span> <span>CREATE</span> <span>TABLE</span><span> Department(
</span><span>11</span>     DepartmentID <span>int</span> <span>IDENTITY</span>(<span>1</span>,<span>1</span>) <span>NOT</span> <span>NULL</span> <span>PRIMARY</span> <span>KEY</span><span>,
</span><span>12</span>     Name <span>NVARCHAR</span>(<span>200</span>) <span>NOT</span> <span>NULL</span><span>,
</span><span>13</span>     GroupName <span>NVARCHAR</span>(<span>200</span>) <span>NOT</span> <span>NULL</span><span>,
</span><span>14</span>     Company <span>NVARCHAR</span>(<span>300</span><span>),
</span><span>15</span>     ModifiedDate <span>datetime</span> <span>NOT</span> <span>NULL</span>  <span>DEFAULT</span> (<span>getdate</span><span>())
</span><span>16</span> <span>)
</span><span>17</span> 
<span>18</span> <span>INSERT</span> <span>INTO</span> Department(name,<span>[</span><span>Company</span><span>]</span>,groupname) <span>VALUES</span>(<span>'</span><span>销售部</span><span>'</span>,<span>'</span><span>中国你好有限公司XX分公司</span><span>'</span>,<span>'</span><span>销售组</span><span>'</span><span>)
</span><span>19</span> <span>GO</span> <span>100000</span>
<span>20</span> 
<span>21</span> <span>CREATE</span> <span>TABLE</span><span> DBCCResult (
</span><span>22</span> PageFID <span>NVARCHAR</span>(<span>200</span><span>),
</span><span>23</span> PagePID <span>NVARCHAR</span>(<span>200</span><span>),
</span><span>24</span> IAMFID <span>NVARCHAR</span>(<span>200</span><span>),
</span><span>25</span> IAMPID <span>NVARCHAR</span>(<span>200</span><span>),
</span><span>26</span> ObjectID <span>NVARCHAR</span>(<span>200</span><span>),
</span><span>27</span> IndexID <span>NVARCHAR</span>(<span>200</span><span>),
</span><span>28</span> PartitionNumber <span>NVARCHAR</span>(<span>200</span><span>),
</span><span>29</span> PartitionID <span>NVARCHAR</span>(<span>200</span><span>),
</span><span>30</span> iam_chain_type <span>NVARCHAR</span>(<span>200</span><span>),
</span><span>31</span> PageType <span>NVARCHAR</span>(<span>200</span><span>),
</span><span>32</span> IndexLevel <span>NVARCHAR</span>(<span>200</span><span>),
</span><span>33</span> NextPageFID <span>NVARCHAR</span>(<span>200</span><span>),
</span><span>34</span> NextPagePID <span>NVARCHAR</span>(<span>200</span><span>),
</span><span>35</span> PrevPageFID <span>NVARCHAR</span>(<span>200</span><span>),
</span><span>36</span> PrevPagePID <span>NVARCHAR</span>(<span>200</span><span>)
</span><span>37</span> <span>)
</span><span>38</span> 
<span>39</span> <span>TRUNCATE</span> <span>TABLE</span> <span>[</span><span>dbo</span><span>]</span>.<span>[</span><span>DBCCResult</span><span>]</span>
<span>40</span> 
<span>41</span> <span>INSERT</span> <span>INTO</span> DBCCResult <span>EXEC</span> (<span>'</span><span>DBCC IND(practice,Department,-1) </span><span>'</span><span>)
</span><span>42</span> 
<span>43</span> <span>SELECT</span> <span>*</span> <span>FROM</span> <span>[</span><span>dbo</span><span>]</span>.<span>[</span><span>DBCCResult</span><span>]</span> <span>ORDER</span> <span>BY</span> <span>[</span><span>PageType</span><span>]</span> <span>DESC</span> 
<span>44</span> 
<span>45</span> <span>DBCC</span> TRACEON(<span>3604</span>,<span>-</span><span>1</span><span>)
</span><span>46</span> <span>GO</span>
<span>47</span> <span>DBCC</span> PAGE(practice,<span>1</span>,<span>114</span>,<span>3</span><span>) 
</span><span>48</span> <span>GO</span>
<span>49</span> 
<span>50</span> <span>select</span> <span>%%</span>lockres<span>%%</span> <span>AS</span> <span>'</span><span>数据页的keyhashvalue</span><span>'</span> <span>from</span><span> Department
</span><span>51</span> 
<span>52</span> 
<span>53</span> 
<span>54</span> 
<span>55</span> 
<span>56</span> 
<span>57</span> <span>SET</span> <span>TRANSACTION</span> <span>ISOLATION</span> <span>LEVEL</span> <span>SERIALIZABLE</span>
<span>58</span> <span>GO</span>
<span>59</span> <span>BEGIN</span> <span>TRANSACTION</span>
<span>60</span> <span>SELECT</span> DepartmentID <span>FROM</span> Department <span>WHERE</span> DepartmentID <span>BETWEEN</span> <span>0</span> <span>AND</span> <span>122</span> 
<span>61</span> <span>--</span><span>COMMIT TRAN</span>
<span>62</span> 
<span>63</span> <span>SELECT</span><span>  resource_type ,
</span><span>64</span> <span>        resource_database_id ,
</span><span>65</span> <span>        resource_description ,
</span><span>66</span> <span>        resource_associated_entity_id ,
</span><span>67</span> <span>        request_mode ,
</span><span>68</span> <span>        request_type ,
</span><span>69</span> <span>        request_status
</span><span>70</span> <span>FROM</span><span>    sys.dm_tran_locks
</span><span>71</span> <span>WHERE</span>   <span>[</span><span>resource_database_id</span><span>]</span><span>=</span><span>DB_ID</span>(<span>'</span><span>practice</span><span>'</span><span>) 
</span><span>72</span> <span>AND</span> <span>[</span><span>resource_description</span><span>]</span> <span>LIKE</span> <span>'</span><span>%b03b%</span><span>'</span>
<span>73</span> <span>ORDER</span> <span>BY</span> <span>[</span><span>resource_type</span><span>]</span>
<span> 1</span> <span>--</span><span>测试非聚集索引</span>
<span> 2</span> <span>USE</span> <span>[</span><span>testhashkey</span><span>]</span>
<span> 3</span> <span>GO</span>
<span> 4</span> <span>CREATE</span> <span>TABLE</span><span> testnoncluster
</span><span> 5</span> <span>    (
</span><span> 6</span>       a <span>NVARCHAR</span>(<span>3800</span>) <span>NOT</span> <span>NULL</span><span> ,
</span><span> 7</span>       b <span>INT</span> <span>NOT</span> <span>NULL</span>
<span> 8</span> <span>    )
</span><span> 9</span> <span>GO</span>
<span>10</span> 
<span>11</span> <span>CREATE</span> <span>UNIQUE</span> <span>NONCLUSTERED</span> <span>INDEX</span> ucil <span>ON</span><span> testnoncluster(b)
</span><span>12</span> <span>GO</span>
<span>13</span> 
<span>14</span> <span>INSERT</span><span>  testnoncluster
</span><span>15</span> <span>SELECT</span>  <span>CAST</span>(<span>11</span> <span>AS</span> <span>VARCHAR</span>(<span>10</span>))<span>+</span><span>replicate</span>(<span>'</span><span>a</span><span>'</span>, <span>3500</span>),<span>1</span> <span>UNION</span> <span>ALL</span>
<span>16</span> <span>SELECT</span>  <span>CAST</span>(<span>22</span> <span>AS</span> <span>VARCHAR</span>(<span>10</span>))<span>+</span><span>replicate</span>(<span>'</span><span>a</span><span>'</span>, <span>3500</span>),<span>2</span>
<span>17</span> 
<span>18</span> 
<span>19</span> <span>SELECT</span> <span>*</span> <span>FROM</span> <span>[</span><span>dbo</span><span>]</span>.<span>[</span><span>testnoncluster</span><span>]</span>
<span> 1</span> <span>TRUNCATE</span> <span>TABLE</span> <span>[</span><span>dbo</span><span>]</span>.<span>[</span><span>DBCCResult</span><span>]</span>
<span> 2</span> 
<span> 3</span> <span>INSERT</span> <span>INTO</span> DBCCResult <span>EXEC</span> (<span>'</span><span>DBCC IND(testhashkey,testnoncluster,-1) </span><span>'</span><span>)
</span><span> 4</span> 
<span> 5</span> <span>SELECT</span> <span>*</span> <span>FROM</span> <span>[</span><span>dbo</span><span>]</span>.<span>[</span><span>DBCCResult</span><span>]</span> <span>ORDER</span> <span>BY</span> <span>[</span><span>PageType</span><span>]</span> <span>DESC</span> 
<span> 6</span> 
<span> 7</span> <span>DBCC</span> TRACEON(<span>3604</span>,<span>-</span><span>1</span><span>)
</span><span> 8</span> <span>GO</span>
<span> 9</span> <span>DBCC</span> PAGE(testhashkey,<span>1</span>,<span>77</span>,<span>3</span><span>) 
</span><span>10</span> <span>GO</span>
<span>1</span> <span>select</span> <span>%%</span>lockres<span>%%</span> <span>AS</span> <span>'</span><span>数据页的keyhashvalue</span><span>'</span> <span>from</span> testnoncluster
<span> 1</span> <span>SET</span> <span>TRANSACTION</span> <span>ISOLATION</span> <span>LEVEL</span> <span>SERIALIZABLE</span>
<span> 2</span> <span>GO</span>
<span> 3</span> <span>BEGIN</span> <span>TRANSACTION</span>
<span> 4</span> <span>SELECT</span> b <span>FROM</span> <span>[</span><span>dbo</span><span>]</span>.<span>[</span><span>testnoncluster</span><span>]</span> <span>WHERE</span> <span>[</span><span>b</span><span>]</span><span>=</span><span>1</span>
<span> 5</span> <span>--</span><span>COMMIT TRAN</span>
<span> 6</span> 
<span> 7</span> <span>SELECT</span><span>  resource_type ,
</span><span> 8</span> <span>        resource_database_id ,
</span><span> 9</span> <span>        resource_description ,
</span><span>10</span> <span>        resource_associated_entity_id ,
</span><span>11</span> <span>        request_mode ,
</span><span>12</span> <span>        request_type ,
</span><span>13</span> <span>        request_status
</span><span>14</span> <span>FROM</span><span>    sys.dm_tran_locks
</span><span>15</span> <span>WHERE</span>   <span>[</span><span>resource_database_id</span><span>]</span><span>=</span><span>DB_ID</span>(<span>'</span><span>testhashkey</span><span>'</span><span>)
</span><span>16</span> <span>ORDER</span> <span>BY</span> <span>[</span><span>resource_type</span><span>]</span>
<span> 1</span> <span>--</span><span>测试堆表和非聚集索引表的数据页也有keyhashvalue</span>
<span> 2</span> <span>USE</span> <span>[</span><span>testhashkey</span><span>]</span>
<span> 3</span> <span>GO</span>
<span> 4</span> 
<span> 5</span> 
<span> 6</span> <span>CREATE</span> <span>TABLE</span><span> testnoncluster2
</span><span> 7</span> <span>    (
</span><span> 8</span>       a <span>NVARCHAR</span>(<span>3800</span>) <span>NOT</span> <span>NULL</span><span> ,
</span><span> 9</span>       b <span>INT</span> <span>NOT</span> <span>NULL</span><span>,
</span><span>10</span>       c <span>INT</span> <span>NOT</span> <span>NULL</span> 
<span>11</span> <span>    )
</span><span>12</span> <span>GO</span>
<span>13</span> 
<span>14</span> 
<span>15</span> 
<span>16</span> <span>CREATE</span> <span>UNIQUE</span> <span>NONCLUSTERED</span> <span>INDEX</span> ucil <span>ON</span><span> testnoncluster2(b)
</span><span>17</span> <span>GO</span>
<span>18</span> 
<span>19</span> <span>INSERT</span><span>  testnoncluster2
</span><span>20</span> <span>SELECT</span>  <span>CAST</span>(<span>11</span> <span>AS</span> <span>VARCHAR</span>(<span>10</span>))<span>+</span><span>replicate</span>(<span>'</span><span>a</span><span>'</span>, <span>3500</span>),<span>1</span>,<span>1</span> <span>UNION</span> <span>ALL</span>
<span>21</span> <span>SELECT</span>  <span>CAST</span>(<span>22</span> <span>AS</span> <span>VARCHAR</span>(<span>10</span>))<span>+</span><span>replicate</span>(<span>'</span><span>a</span><span>'</span>, <span>3500</span>),<span>2</span>,<span>2</span>
<span>22</span> 
<span>23</span> 
<span>24</span> 
<span>25</span> <span>SET</span> <span>TRANSACTION</span> <span>ISOLATION</span> <span>LEVEL</span> <span>SERIALIZABLE</span>
<span>26</span> <span>GO</span>
<span>27</span> <span>BEGIN</span> <span>TRANSACTION</span>
<span>28</span> <span>DELETE</span> <span>FROM</span> <span>[</span><span>dbo</span><span>]</span>.<span>[</span><span>testnoncluster2</span><span>]</span>  <span>WHERE</span> <span>[</span><span>c</span><span>]</span><span>=</span><span>1</span>
<span>29</span> <span>--</span><span>ROLLBACK TRAN</span>
<span>30</span> 
<span>31</span> <span>SELECT</span><span>  resource_type ,
</span><span>32</span> <span>        resource_database_id ,
</span><span>33</span> <span>        resource_description ,
</span><span>34</span> <span>        resource_associated_entity_id ,
</span><span>35</span> <span>        request_mode ,
</span><span>36</span> <span>        request_type ,
</span><span>37</span> <span>        request_status
</span><span>38</span> <span>FROM</span><span>    sys.dm_tran_locks
</span><span>39</span> <span>WHERE</span>   <span>[</span><span>resource_database_id</span><span>]</span><span>=</span><span>DB_ID</span>(<span>'</span><span>testhashkey</span><span>'</span><span>) 
</span><span>40</span> <span>ORDER</span> <span>BY</span> <span>[</span><span>resource_type</span><span>]</span>
<span>41</span> 
<span>42</span> 
<span>43</span> 
<span>44</span> 
<span>45</span> <span>select</span> <span>%%</span>lockres<span>%%</span> <span>AS</span> <span>'</span><span>数据页的keyhashvalue</span><span>'</span> <span>from</span> testnoncluster2
<span> 1</span> <span>--</span><span>测试堆表和非聚集索引表的数据页也有keyhashvalue</span>
<span> 2</span> <span>USE</span> <span>[</span><span>testhashkey</span><span>]</span>
<span> 3</span> <span>GO</span>
<span> 4</span> 
<span> 5</span> 
<span> 6</span> 
<span> 7</span> <span>CREATE</span> <span>TABLE</span><span> testnoncluster2
</span><span> 8</span> <span>    (
</span><span> 9</span>       a <span>NVARCHAR</span>(<span>3800</span>) <span>NOT</span> <span>NULL</span><span> ,
</span><span>10</span>       b <span>INT</span> <span>NOT</span> <span>NULL</span><span>,
</span><span>11</span>       c <span>INT</span> <span>NOT</span> <span>NULL</span> 
<span>12</span> <span>    )
</span><span>13</span> <span>GO</span>
<span>14</span> 
<span>15</span> 
<span>16</span> 
<span>17</span> <span>CREATE</span> <span>UNIQUE</span> <span>NONCLUSTERED</span> <span>INDEX</span> ucil <span>ON</span><span> testnoncluster2(b)
</span><span>18</span> <span>GO</span>
<span>19</span> 
<span>20</span> <span>INSERT</span><span>  testnoncluster2
</span><span>21</span> <span>SELECT</span>  <span>CAST</span>(<span>11</span> <span>AS</span> <span>VARCHAR</span>(<span>10</span>))<span>+</span><span>replicate</span>(<span>'</span><span>a</span><span>'</span>, <span>3500</span>),<span>1</span>,<span>1</span> <span>UNION</span> <span>ALL</span>
<span>22</span> <span>SELECT</span>  <span>CAST</span>(<span>22</span> <span>AS</span> <span>VARCHAR</span>(<span>10</span>))<span>+</span><span>replicate</span>(<span>'</span><span>a</span><span>'</span>, <span>3500</span>),<span>2</span>,<span>2</span>
<span>23</span> 
<span>24</span> 
<span>25</span> 
<span>26</span> 
<span>27</span> 
<span>28</span> <span>TRUNCATE</span> <span>TABLE</span> <span>[</span><span>dbo</span><span>]</span>.<span>[</span><span>DBCCResult</span><span>]</span>
<span>29</span> 
<span>30</span> <span>INSERT</span> <span>INTO</span> DBCCResult <span>EXEC</span> (<span>'</span><span>DBCC IND(testhashkey,testnoncluster2,-1) </span><span>'</span><span>)
</span><span>31</span> 
<span>32</span> <span>SELECT</span> <span>*</span> <span>FROM</span> <span>[</span><span>dbo</span><span>]</span>.<span>[</span><span>DBCCResult</span><span>]</span> <span>ORDER</span> <span>BY</span> <span>[</span><span>PageType</span><span>]</span> <span>DESC</span> 
<span>33</span> 
<span>34</span> <span>DBCC</span> TRACEON(<span>3604</span>,<span>-</span><span>1</span><span>)
</span><span>35</span> <span>GO</span>
<span>36</span> <span>DBCC</span> PAGE(testhashkey,<span>1</span>,<span>165</span>,<span>3</span><span>) 
</span><span>37</span> <span>GO</span>
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。