2013年2月6日水曜日

ioDriveの進め

最近のサーバチューニングでPCIe直結の高速ドライブを用いたハードウェアチューニングに凝っています。

費用対効果が優れているから、今年からは、サーバの世界では、一般化したソリューションだという認識です。

SQL Serverも

http://www.microsoft.com/ja-jp/sqlserver/2012/ssd-appliance/default.aspx

MySQLも

↓このシリーズ

RDBMSだと処理の内容やタイミングにもよるのですが、性能がよくなります。
(DBとのやり取りが多いヘボい構造だったり、クエリの作りの問題など多種多様な問題の場合もあったり、キャッシュの活用度合いにもよるので、一概には言えないのですが、概ね良い結果をもたらします。)

あと、多数のVM数を動作せるホストOSには必須かなと思っています。
(感覚、実用性に耐えれるVM数が、10から200くらいへ増えます。)

借りれるサーバ

Parallelのコードを書くときの注意点

マルチコアを活かそうとして、Parallelのコードを書くかと思いますが、自処理の外の変数を使用するときは、lockステートメントを使用して排他制御をしましょう。
下記のようなコードは、aの値が、必ずしも0とはならない。


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
int a = 0;
List<string> l = new List<string>();

for (int i = 0; i < 10000; i++)
{
l.Add("" + i);
}

Parallel.ForEach(l, s =>
{
a = a + int.Parse(s);
Console.WriteLine(s);

a = a - int.Parse(s);

});

Console.WriteLine("a=" + a);
Console.ReadLine();
}
}
}


a = a + int.Parse(s);
lock(l) a = a + int.Parse(s);
となります。

2012年12月13日木曜日

SQL Server2012 エラー「ロック要求がタイムアウトしました。 (Microsoft SQL Server、エラー: 1222)」について

SQL Server 2012RTMをしようしていると下記のエラーが発生してテーブル一覧がSQLServerManagementStudioで取得できなくなってしました。

そういえば、テーブルを100個ほど追加したのがいけなかったのかなぁ、、、
と思いつつ、Service Pack1を適用して再度、テーブル一覧を確認すると、、、、
問題は解消され、直りました。

------------------------------
ロック要求がタイムアウトしました。 (Microsoft SQL Server、エラー: 1222)
ヘルプを表示するには http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=11.00.2100&EvtSrc=MSSQLServer&EvtID=1222&LinkId=20476 をクリック
------------------------------
ボタン:
OK
------------------------------

SQL Server 2012もSP1が出て、ようやく細かい問題が解決して、使用できそうな感じです。
良かった。良かった。

追記:
あと、SP1を入れて気付いたのは、複雑なMERGE文が
 ・レスポンス改善
 ・構文チェックの改善
が行われたのがうれしいです。
後者は1時間たってもかえってこないクエリがSP1を当てると、構文エラーになり、それを直すことで、6秒の処理で終わりました。

2012年12月11日火曜日

現実と理想のはざまで悩むSEの苦悩(高速ストレージの導入)


現実と理想のはざまで悩むSEの苦悩
みなさん、PCIe接続のSSDドライブってご存知でしょうか?
SQL ServerやOracleを使用して性能が出ないとか言って、CPUを高性能なものにしたり、メモリをたくさん積んだりして何とか性能を稼ごうします。
そんな時にPCI Express直付のカードを指してそこにデータンベースを構築すると問題は解決します。

こんな製品
http://cn.teldevice.co.jp/product/detail/iodrive/feature

性能
http://d.hatena.ne.jp/rx7/20101015/p1

ドラマ
http://www.slideshare.net/sususlideshare/crooz-meet-fusion-io3-open-15159194

何が苦悩かというと、この手のソリューションはまだまだメジャーないため、
・HDDのディスク回転を15,000rpmへ上げろ
・RAIDの構成を10にするんだ
・CPUを2つだ。デカコアだ。
・メモリを倍にしろ
・FibarChanelの8Gだ。dualだ。
・EnterpriseEditionを入れてチューニングだ。
・プログラムチューニングだ。
などなどいろいろと実績のある手を打ちますが、費用対効果がそれほどは出ません。
このドライブを入れるほうが性能改善も見込まれて故障率が下がり、使用電力も下がるので、ベストプラクティスなんだけどなぁ。なかなか浸透しないなぁと思っている次第です。

価格もこなれてきおり
http://hesonogoma.com/hardware/fusion-io_iodrive_pricelist_2012.html
⇒実際ioDrive2 1.2TBが167万くらいであとは、交渉ですかねぇ

以上

2012年12月10日月曜日

VMware Server 1.0.10で管理しているサーバのディスク容量拡張(ゲストOSWindows2000)

1)ツールを使ってVHDを拡張

--------------------------------------------------------------------------------------------------
E:\Servers\Server01>"C:\Program Files (x86)\VMware\VMware Server\vmware-vdiskmanage
r.exe" -x 640GB "Windows 2000 Server (4).vmdk"
Using log file C:\DOCUME~1\VMWARE~1\LOCALS~1\Temp\1\vmware-VMWareUser\vdiskmanag
er.log
  Grow: 100% done.
The old geometry C/H/S of the disk is: 41773/255/63
The new geometry C/H/S of the disk is: 83546/255/63
Disk expansion completed successfully.
WARNING: If the virtual disk is partitioned, you must use a third-party
         utility in the virtual machine to expand the size of the
         partitions. For more information, see:
         http://www.vmware.com/support/kb/enduser/std_adp.php?p_faqid=1647
E:\Servers\Server01>
--------------------------------------------------------------------------------------------------

⇒320GBを640GBへ拡張
   可変長ディスクなのにこの処理に17.5時間かかりました。
 Hyper-V3でディスク拡張は一瞬だった。

2)Windows2000のパーティションを拡張

--------------------------------------------------------------------------------------------------
C:\Program Files\Resource Kit>diskpart
Microsoft DiskPart version 5.1.3553
Copyright (C) 1999-2001 Microsoft Corporation.
On computer: Server01
DISKPART> list volume
  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
  Volume 0     H                       CD-ROM          0 B
  Volume 1     C   System       NTFS   Partition     50 GB  Healthy    System
  Volume 2     D   Share-File01 NTFS   Partition    240 GB  Healthy
  Volume 3     E   Share-Temp   NTFS   Partition     80 GB  Healthy
  Volume 4     F   Share-File02 NTFS   Partition    320 GB  Healthy
  Volume 5     G   ボリューム   NTFS   Partition    500 GB  Healthy

DISKPART> select volume 4
Volume 4 is the selected volume.
DISKPART> extend
DiskPart successfully extended the volume.
DISKPART>
DISKPART> exit
Leaving DiskPart...
C:\Program Files\Resource Kit>exit
--------------------------------------------------------------------------------------------------
⇒難なく拡張できた。
   いつの間にかに誰かが、サーバにResouceKitをインストールしておいてくれたから簡単にできました。

3)あとは、自前のディスク容量制御ツールを入れて、毎日指定した容量調整を行うようにしてディスク容量不足から解放となります。

以上です。

2012年11月9日金曜日

SQL Server2012と2008R2のやり取り、StandaerdとEnterprise Editionのやり取り

↓SQL Server2008R2SP2のバックアップをSQLServer2012RTMでリストアしたときのエラー
メッセージ 3241、レベル 16、状態 13、行 1
デバイス 'D:\Summary.bak' のメディア ファミリが正しい形式ではありません。SQL Server はこのメディア ファミリを処理できません。
メッセージ 3013、レベル 16、状態 1、行 1
RESTORE DATABASE が異常終了しています。
⇒これまたうまくいかないものです。

↓EnterpriseのバックアップをStandaerdでリストアして失敗した。
データベース 'Master' の 539440 ページ、ファイル 1 のファイル 'Master_Data' を処理しました。
データベース 'Master' の 42 ページ、ファイル 1 のファイル 'Master_Log' を処理しました。
メッセージ 3013、レベル 16、状態 1、行 2
RESTORE DATABASE が異常終了しています。
メッセージ 909、レベル 21、状態 1、行 2
データベース 'Master' は、オブジェクト '店別在庫' の一部または全体でデータ圧縮または vardecimal ストレージ形式が有効になっているため、このエディションの SQL Server では開けません。データ圧縮および vardecimal ストレージ形式がサポートされているのは、SQL Server Enterprise Edition だけです。
メッセージ 905、レベル 21、状態 1、行 2
データベース 'Master' は、このエディションの SQL Server では起動できません。このデータベースには、パーティション関数 '店別在庫PFunc' が含まれています。パーティション分割は SQL Server Enterprise Edition でしかサポートされません。
メッセージ 933、レベル 21、状態 1、行 2
SQL Server の現在のエディションではデータベース機能の一部が使用できないため、データベース 'Master' を開くことができません。
⇒データ圧縮やパーティションインデックスが引っかかったようです。

2012年10月10日水曜日

SQL Server 2012の2012/10/10の更新について

本日のWindowsUpdateでSQL Serverのバージョンが11.0.2376.0になった。

今までは、11.00.2332だったのになぁ

あれれ?CU4が出ているのかなぁ

Microsoft SQL Server 2012 - 11.0.2376.0 (X64)
        Aug 15 2012 16:39:20
        Copyright (c) Microsoft Corporation
        Developer Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)


メモ:バージョンについて
March 2012  RTM        11.00.2100
Microsoft SQL Server 2012 - 11.0.2100.60 (X64)
        Feb 10 2012 19:39:15
        Copyright (c) Microsoft Corporation
        Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
April 2012  Cumulative Update 1 (CU1)  11.00.2316
June 2012  Cumulative Update 2 (CU2)  11.00.2325
August 2012  Cumulative Update 3 (CU3)  11.00.2332
以上