SQL 磁盘设置建议 - TempDB、日志 DB、数据文件放置问题

RTh*_*mas 8 sql-server-2008 disk-structures san

我们有一个非常活跃的数据库服务器,上面运行着不拘一格的应用程序集合。其中最繁忙的两个是全天进行文档扫描和工作流处理的 Laserfiche 数据库(平均约 2800 批请求/秒)和路由电子邮件的黑莓服务器应用程序。还有大约 25 个其他的小型应用程序数据库。

我们是政府机构,所以我们只获得了单个数据库服务器许可证的预算。

最近,我们获得了一个 SAN 来解决磁盘争用问题。

因此,目前我们在其自己的磁盘(raid 1 镜像对)上运行 TempDB,并且我们已将事务日志和数据文件移至 SAN。事务日志放在一个逻辑位置,数据文件放在另一个位置。从物理上讲,它是同一个阵列,但它是一个由 14 个轴(磁盘)组成的阵列,采用 RAID 1+0 配置。

一个非常强大的 SAN - 事情运行得更好。队列长度减半。

就在今天,我们还获得了另一种选择。如果我们当前在文件服务器上需要它,我们也可以有一个 4 磁盘阵列。我知道通常建议在两个单独的阵列上使用 MDF 和 LDF,但在我们的情况下,唯一的方法是将数据或事务日志从 SAN 移到配置为 Raid 5 的 4 磁盘阵列上。请记住它们是当前位于不同的逻辑卷中,但共享相同的物理阵列。

从臀部拍摄我觉得将 MDF 和 LDF 放在 14 轴 raid 1+0 阵列上可能与将它们与 4 轴 raid 5 阵列上的一个分开一样好。但是,我不会在这里问我是否是磁盘逻辑专家。两个选项都使用基本相同的 15k SAS 磁盘 - 即每个主轴基本上是相同的。

所以,本质上问题是。通过将数据或日志移动到它自己的 4 轴 raid 5 阵列,在配置为 RAID 1+0 的单个 14 轴阵列上的 MDF/LDF 是否会得到任何显着的改善(或根本没有)?

想法?

更新信息:

我还将注意到,当前日志卷上的平均队列长度始终保持在 0.55 左右。Data volume 上的平均队列长度很少超过 0.01(通常为 0.00)

sys.dm_io_virtual_file_stats 查询结果:

<table>
 <tr>
  <td>database
  id</td>
  <td>Volume</td>
  <td>io_stall_read_ms</td>
  <td>num_of_reads</td>
  <td>avg_read_stall_ms</td>
  <td>io_stall_write_ms</td>
  <td>num_of_writes</td>
  <td>avg_write_stall_ms</td>
  <td>io_stalls</td>
  <td>total_io</td>
  <td>avg_io_stall_ms</td>
 </tr>
 <tr>
  <td>25</td>
  <td>h</td>
  <td>175086</td>
  <td>1411</td>
  <td>124</td>
  <td>69</td>
  <td>41</td>
  <td>1.6</td>
  <td>175155</td>
  <td>1452</td>
  <td>120.5</td>
 </tr>
 <tr>
  <td>16</td>
  <td>h</td>
  <td>54691</td>
  <td>748</td>
  <td>73</td>
  <td>34</td>
  <td>23</td>
  <td>1.4</td>
  <td>54725</td>
  <td>771</td>
  <td>70.9</td>
 </tr>
 <tr>
  <td>41</td>
  <td>h</td>
  <td>192255</td>
  <td>982</td>
  <td>195.6</td>
  <td>5232</td>
  <td>2142</td>
  <td>2.4</td>
  <td>197487</td>
  <td>3124</td>
  <td>63.2</td>
 </tr>
 <tr>
  <td>24</td>
  <td>h</td>
  <td>8616</td>
  <td>178</td>
  <td>48.1</td>
  <td>55</td>
  <td>22</td>
  <td>2.4</td>
  <td>8671</td>
  <td>200</td>
  <td>43.1</td>
 </tr>
 <tr>
  <td>29</td>
  <td>h</td>
  <td>54617</td>
  <td>1247</td>
  <td>43.8</td>
  <td>71</td>
  <td>41</td>
  <td>1.7</td>
  <td>54688</td>
  <td>1288</td>
  <td>42.4</td>
 </tr>
 <tr>
  <td>40</td>
  <td>h</td>
  <td>132664</td>
  <td>3158</td>
  <td>42</td>
  <td>184</td>
  <td>85</td>
  <td>2.1</td>
  <td>132848</td>
  <td>3243</td>
  <td>41</td>
 </tr>
 <tr>
  <td>15</td>
  <td>h</td>
  <td>26556</td>
  <td>763</td>
  <td>34.8</td>
  <td>33</td>
  <td>23</td>
  <td>1.4</td>
  <td>26589</td>
  <td>786</td>
  <td>33.8</td>
 </tr>
 <tr>
  <td>37</td>
  <td>h</td>
  <td>6943152</td>
  <td>500214</td>
  <td>13.9</td>
  <td>310706380</td>
  <td>9083273</td>
  <td>34.2</td>
  <td>317649532</td>
  <td>9583487</td>
  <td>33.1</td>
 </tr>
 <tr>
  <td>32</td>
  <td>h</td>
  <td>14832</td>
  <td>426</td>
  <td>34.7</td>
  <td>42</td>
  <td>38</td>
  <td>1.1</td>
  <td>14874</td>
  <td>464</td>
  <td>32</td>
 </tr>
 <tr>
  <td>43</td>
  <td>h</td>
  <td>46937</td>
  <td>947</td>
  <td>49.5</td>
  <td>1203</td>
  <td>844</td>
  <td>1.4</td>
  <td>48140</td>
  <td>1791</td>
  <td>26.9</td>
 </tr>
 <tr>
  <td>17</td>
  <td>h</td>
  <td>23166</td>
  <td>786</td>
  <td>29.4</td>
  <td>260</td>
  <td>125</td>
  <td>2.1</td>
  <td>23426</td>
  <td>911</td>
  <td>25.7</td>
 </tr>
 <tr>
  <td>44</td>
  <td>h</td>
  <td>65563</td>
  <td>2968</td>
  <td>22.1</td>
  <td>451</td>
  <td>334</td>
  <td>1.3</td>
  <td>66014</td>
  <td>3302</td>
  <td>20</td>
 </tr>
 <tr>
  <td>27</td>
  <td>h</td>
  <td>73622</td>
  <td>3325</td>
  <td>22.1</td>
  <td>547</td>
  <td>483</td>
  <td>1.1</td>
  <td>74169</td>
  <td>3808</td>
  <td>19.5</td>
 </tr>
 <tr>
  <td>31</td>
  <td>h</td>
  <td>19557</td>
  <td>978</td>
  <td>20</td>
  <td>218</td>
  <td>128</td>
  <td>1.7</td>
  <td>19775</td>
  <td>1106</td>
  <td>17.9</td>
 </tr>
 <tr>
  <td>13</td>
  <td>h</td>
  <td>5238308</td>
  <td>176396</td>
  <td>29.7</td>
  <td>70537264</td>
  <td>4109175</td>
  <td>17.2</td>
  <td>75775572</td>
  <td>4285571</td>
  <td>17.7</td>
 </tr>
 <tr>
  <td>26</td>
  <td>h</td>
  <td>849303</td>
  <td>57475</td>
  <td>14.8</td>
  <td>496337</td>
  <td>19098</td>
  <td>26</td>
  <td>1345640</td>
  <td>76573</td>
  <td>17.6</td>
 </tr>
 <tr>
  <td>28</td>
  <td>h</td>
  <td>12707</td>
  <td>799</td>
  <td>15.9</td>
  <td>103</td>
  <td>62</td>
  <td>1.6</td>
  <td>12810</td>
  <td>861</td>
  <td>14.9</td>
 </tr>
 <tr>
  <td>42</td>
  <td>h</td>
  <td>28630</td>
  <td>1233</td>
  <td>23.2</td>
  <td>1139</td>
  <td>883</td>
  <td>1.3</td>
  <td>29769</td>
  <td>2116</td>
  <td>14.1</td>
 </tr>
 <tr>
  <td>14</td>
  <td>h</td>
  <td>91425</td>
  <td>5480</td>
  <td>16.7</td>
  <td>3762</td>
  <td>2470</td>
  <td>1.5</td>
  <td>95187</td>
  <td>7950</td>
  <td>12</td>
 </tr>
 <tr>
  <td>35</td>
  <td>h</td>
  <td>8253</td>
  <td>546</td>
  <td>15.1</td>
  <td>193</td>
  <td>174</td>
  <td>1.1</td>
  <td>8446</td>
  <td>720</td>
  <td>11.7</td>
 </tr>
 <tr>
  <td>12</td>
  <td>h</td>
  <td>33008</td>
  <td>1852</td>
  <td>17.8</td>
  <td>2179</td>
  <td>1335</td>
  <td>1.6</td>
  <td>35187</td>
  <td>3187</td>
  <td>11</td>
 </tr>
 <tr>
  <td>36</td>
  <td>h</td>
  <td>4322</td>
  <td>470</td>
  <td>9.2</td>
  <td>150</td>
  <td>119</td>
  <td>1.3</td>
  <td>4472</td>
  <td>589</td>
  <td>7.6</td>
 </tr>
 <tr>
  <td>6</td>
  <td>h</td>
  <td>537</td>
  <td>61</td>
  <td>8.7</td>
  <td>21</td>
  <td>22</td>
  <td>0.9</td>
  <td>558</td>
  <td>83</td>
  <td>6.6</td>
 </tr>
 <tr>
  <td>33</td>
  <td>h</td>
  <td>4172</td>
  <td>585</td>
  <td>7.1</td>
  <td>63</td>
  <td>59</td>
  <td>1.1</td>
  <td>4235</td>
  <td>644</td>
  <td>6.6</td>
 </tr>
 <tr>
  <td>30</td>
  <td>h</td>
  <td>633</td>
  <td>71</td>
  <td>8.8</td>
  <td>57</td>
  <td>38</td>
  <td>1.5</td>
  <td>690</td>
  <td>109</td>
  <td>6.3</td>
 </tr>
 <tr>
  <td>10</td>
  <td>h</td>
  <td>479</td>
  <td>65</td>
  <td>7.3</td>
  <td>63</td>
  <td>22</td>
  <td>2.7</td>
  <td>542</td>
  <td>87</td>
  <td>6.2</td>
 </tr>
 <tr>
  <td>38</td>
  <td>h</td>
  <td>635</td>
  <td>70</td>
  <td>8.9</td>
  <td>54</td>
  <td>40</td>
  <td>1.3</td>
  <td>689</td>
  <td>110</td>
  <td>6.2</td>
 </tr>
 <tr>
  <td>19</td>
  <td>h</td>
  <td>867</td>
  <td>125</td>
  <td>6.9</td>
  <td>133</td>
  <td>40</td>
  <td>3.2</td>
  <td>1000</td>
  <td>165</td>
  <td>6</td>
 </tr>
 <tr>
  <td>20</td>
  <td>h</td>
  <td>2157</td>
  <td>342</td>
  <td>6.3</td>
  <td>107</td>
  <td>37</td>
  <td>2.8</td>
  <td>2264</td>
  <td>379</td>
  <td>6</td>
 </tr>
 <tr>
  <td>18</td>
  <td>h</td>
  <td>655</td>
  <td>84</td>
  <td>7.7</td>
  <td>109</td>
  <td>44</td>
  <td>2.4</td>
  <td>764</td>
  <td>128</td>
  <td>5.9</td>
 </tr>
 <tr>
  <td>9</td>
  <td>h</td>
  <td>22017</td>
  <td>1269</td>
  <td>17.3</td>
  <td>12187</td>
  <td>4510</td>
  <td>2.7</td>
  <td>34204</td>
  <td>5779</td>
  <td>5.9</td>
 </tr>
 <tr>
  <td>11</td>
  <td>h</td>
  <td>1641</td>
  <td>226</td>
  <td>7.2</td>
  <td>158</td>
  <td>94</td>
  <td>1.7</td>
  <td>1799</td>
  <td>320</td>
  <td>5.6</td>
 </tr>
 <tr>
  <td>7</td>
  <td>h</td>
  <td>556</td>
  <td>66</td>
  <td>8.3</td>
  <td>40</td>
  <td>40</td>
  <td>1</td>
  <td>596</td>
  <td>106</td>
  <td>5.6</td>
 </tr>
 <tr>
  <td>20</td>
  <td>t</td>
  <td>639</td>
  <td>90</td>
  <td>7</td>
  <td>118</td>
  <td>43</td>
  <td>2.7</td>
  <td>757</td>
  <td>133</td>
  <td>5.6</td>
 </tr>
 <tr>
  <td>24</td>
  <td>t</td>
  <td>1031</td>
  <td>167</td>
  <td>6.1</td>
  <td>67</td>
  <td>29</td>
  <td>2.2</td>
  <td>1098</td>
  <td>196</td>
  <td>5.6</td>
 </tr>
 <tr>
  <td>25</td>
  <td>t</td>
  <td>1269</td>
  <td>210</td>
  <td>6</td>
  <td>111</td>
  <td>47</td>
  <td>2.3</td>
  <td>1380</td>
  <td>257</td>
  <td>5.3</td>
 </tr>
 <tr>
  <td>29</td>
  <td>t</td>
  <td>680</td>
  <td>94</td>
  <td>7.2</td>
  <td>113</td>
  <td>54</td>
  <td>2.1</td>
  <td>793</td>
  <td>148</td>
  <td>5.3</td>
 </tr>
 <tr>
  <td>30</td>
  <td>t</td>
  <td>233</td>
  <td>25</td>
  <td>9</td>
  <td>145</td>
  <td>47</td>
  <td>3</td>
  <td>378</td>
  <td>72</td>
  <td>5.2</td>
 </tr>
 <tr>
  <td>13</td>
  <td>t</td>
  <td>11947937</td>
  <td>55092</td>
  <td>216.9</td>
  <td>163346886</td>
  <td>33789532</td>
  <td>4.8</td>
  <td>175294823</td>
  <td>33844624</td>
  <td>5.2</td>
 </tr>
 <tr>
  <td>15</td>
  <td>t</td>
  <td>693</td>
  <td>119</td>
  <td>5.8</td>
  <td>82</td>
  <td>29</td>
  <td>2.7</td>
  <td>775</td>
  <td>148</td>
  <td>5.2</td>
 </tr>
 <tr>
  <td>16</td>
  <td>t</td>
  <td>731</td>
  <td>119</td>
  <td>6.1</td>
  <td>48</td>
  <td>29</td>
  <td>1.6</td>
  <td>779</td>
  <td>148</td>
  <td>5.2</td>
 </tr>
 <tr>
  <td>29</td>
  <td>h</td>
  <td>176</td>
  <td>34</td>
  <td>5</td>
  <td>1</td>
  <td>1</td>
  <td>0.5</td>
  <td>177</td>
  <td>35</td>
  <td>4.9</td>
 </tr>
 <tr>
  <td>18</td>
  <td>t</td>
  <td>305</td>
  <td>44</td>
  <td>6.8</td>
  <td>165</td>
  <td>52</td>
  <td>3.1</td>
  <td>470</td>
  <td>96</td>
  <td>4.8</td>
 </tr>
 <tr>
  <td>5</td>
  <td>h</td>
  <td>500</td>
  <td>75</td>
  <td>6.6</td>
  <td>60</td>
  <td>40</td>
  <td>1.5</td>
  <td>560</td>
  <td>115</td>
  <td>4.8</td>
 </tr>
 <tr>
  <td>8</td>
  <td>t</td>
  <td>462</td>
  <td>74</td>
  <td>6.2</td>
  <td>118</td>
  <td>48</td>
  <td>2.4</td>
  <td>580</td>
  <td>122</td>
  <td>4.7</td>
 </tr>
 <tr>
  <td>5</td>
  <td>t</td>
  <td>294</td>
  <td>33</td>
  <td>8.6</td>
  <td>80</td>
  <td>47</td>
  <td>1.7</td>
  <td>374</td>
  <td>80</td>
  <td>4.6</td>
 </tr>
 <tr>
  <td>3</td>
  <td>h</td>
  <td>520</td>
  <td>109</td>
  <td>4.7</td>
  <td>3</td>
  <td>4</td>
  <td>0.6</td>
  <td>523</td>
  <td>113</td>
  <td>4.6</td>
 </tr>
 <tr>
  <td>39</td>
  <td>h</td>
  <td>394</td>
  <td>62</td>
  <td>6.3</td>
  <td>77</td>
  <td>40</td>
  <td>1.9</td>
  <td>471</td>
  <td>102</td>
  <td>4.6</td>
 </tr>
 <tr>
  <td>39</td>
  <td>t</td>
  <td>124</td>
  <td>16</td>
  <td>7.3</td>
  <td>165</td>
  <td>47</td>
  <td>3.4</td>
  <td>289</td>
  <td>63</td>
  <td>4.5</td>
 </tr>
 <tr>
  <td>8</td>
  <td>h</td>
  <td>459</td>
  <td>78</td>
  <td>5.8</td>
  <td>93</td>
  <td>43</td>
  <td>2.1</td>
  <td>552</td>
  <td>121</td>
  <td>4.5</td>
 </tr>
 <tr>
  <td>41</td>
  <td>t</td>
  <td>8295</td>
  <td>470</td>
  <td>17.6</td>
  <td>4035</td>
  <td>2359</td>
  <td>1.7</td>
  <td>12330</td>
  <td>2829</td>
  <td>4.4</td>
 </tr>
 <tr>
  <td>31</td>
  <td>t</td>
  <td>637</td>
  <td>91</td>
  <td>6.9</td>
  <td>170</td>
  <td>95</td>
  <td>1.8</td>
  <td>807</td>
  <td>186</td>
  <td>4.3</td>
 </tr>
 <tr>
  <td>7</td>
  <td>t</td>
  <td>242</td>
  <td>29</td>
  <td>8.1</td>
  <td>80</td>
  <td>47</td>
  <td>1.7</td>
  <td>322</td>
  <td>76</td>
  <td>4.2</td>
 </tr>
 <tr>
  <td>22</td>
  <td>h</td>
  <td>298</td>
  <td>80</td>
  <td>3.7</td>
  <td>0</td>
  <td>1</td>
  <td>0</td>
  <td>298</td>
  <td>81</td>
  <td>3.6</td>
 </tr>
 <tr>
  <td>38</td>
  <td>t</td>
  <td>139</td>
  <td>22</td>
  <td>6</td>
  <td>115</td>
  <td>47</td>
  <td>2.4</td>
  <td>254</td>
  <td>69</td>
  <td>3.6</td>
 </tr>
 <tr>
  <td>40</td>
  <td>t</td>
  <td>1016</td>
  <td>159</td>
  <td>6.4</td>
  <td>388</td>
  <td>236</td>
  <td>1.6</td>
  <td>1404</td>
  <td>395</td>
  <td>3.5</td>
 </tr>
 <tr>
  <td>22</td>
  <td>t</td>
  <td>76</td>
  <td>18</td>
  <td>4</td>
  <td>7</td>
  <td>5</td>
  <td>1.2</td>
  <td>83</td>
  <td>23</td>
  <td>3.5</td>
 </tr>
 <tr>
  <td>44</td>
  <td>t</td>
  <td>873</td>
  <td>133</td>
  <td>6.5</td>
  <td>479</td>
  <td>263</td>
  <td>1.8</td>
  <td>1352</td>
  <td>396</t

Mar*_*ith 8

不幸的是,这是一个很大的“视情况而定”。由于您拥有如此多的应用程序,可能具有截然不同的 IO 配置文件,共享相同的实例/服务器和阵列,从而使情况变得更加复杂。

通常您会希望隔离数据和日志文件,因为 IO 配置文件是相反的。通常侧重于数据文件的随机读取和日志的顺序写入。由于您有多个日志文件,因此日志元素在您的情况下有所不同。

我首先要了解数据库相对于彼此消耗的 IO。

    SELECT
        DB_NAME(fs.database_id) AS [Database Name]
      , mf.physical_name
      , io_stall_read_ms
      , num_of_reads
      , CAST(io_stall_read_ms / (1.0 + num_of_reads) AS NUMERIC(10, 1)) AS [avg_read_stall_ms]
      , io_stall_write_ms
      , num_of_writes
      , CAST(io_stall_write_ms / (1.0 + num_of_writes) AS NUMERIC(10, 1)) AS [avg_write_stall_ms]
      , io_stall_read_ms + io_stall_write_ms AS [io_stalls]
      , num_of_reads + num_of_writes AS [total_io]
      , CAST((io_stall_read_ms + io_stall_write_ms) 
        / (1.0 + num_of_reads + num_of_writes) AS NUMERIC(10,1)) AS [avg_io_stall_ms]
    FROM
        sys.dm_io_virtual_file_stats(NULL, NULL) AS fs
    INNER JOIN sys.master_files AS mf
    ON  fs.database_id = mf.database_id
        AND fs.[file_id] = mf.[file_id]
    ORDER BY
            DatabaseName ASC, mf.physical_name
--  num_of_reads DESC
--  num_of_writes DESC  
    OPTION (RECOMPILE) ;
Run Code Online (Sandbox Code Playgroud)

如果您可以将其输出格式化为可读形式并添加到您的问题中,那么有人可以对您的 18 个磁盘的最佳用途做出更有根据的猜测。

如果我这样做是盲目的,我可能会开始分配:

  • 6 RAID10 用于最繁忙数据库的数据文件
  • 6 RAID10 用于其他数据库的数据文件
  • 4 条 RAID10 共享日志
  • 2 RAID1 Tempdb(您的单磁盘配置是有风险的单点故障)

假如说:

  1. SAN 托管其他阵列,因此可以从池中获得热备件
  2. 未使用快照隔离或未对 tempdb 提出大量要求

编辑:以下更新有关队列长度的问题:

在评估 SQL Server 性能时,队列长度计数器经常被误解。我遇到的最好的类比之一来自 Simon Sabin 的博客文章Disk Queue Length - 有点像购买 Guiness

在您的情况下,它们太低了,您可能会用一半的锭子。不过,从上述查询中查看其他统计数据仍然很有趣。