月別アーカイブ: 12月 2012

SQL 2012 ColumnStore

http://engineermemo.wordpress.com/2011/10/12/パーティションのスイッチを使用した-columnstore-インデ/

columnstore インデックスの説明を読んでいたところ、利用できるEditionが Enterprise のみだった。
→とはいえ「パーティションと組み合わせ出来たら最強なんじゃね?」。なかなかに神機能な雰囲気。

最近 Analysis Services と戯れていたところだったので、ある意味 Analysis Services の統合となるこの機能には興味津々。SQL構文のままアプリケーション側の変更なしで集計が早くなるので大変ありがたい。

あとはこれが SQL Azure に搭載されれば。

async/await パターンで同時アクセス数を制御する

http://stackoverflow.com/questions/10806951/how-to-limit-the-amount-of-concurrent-async-i-o-operations

http://blogs.msdn.com/b/pfxteam/archive/2012/02/29/10274035.aspx

http経由で大量のデータ取得アクセスをしないといけないような状況で、 async/await を何も考えずに使ったら数万件同時にtcpセッション開始してエラーになってしまった。

SemaphoreSlim を使って同時実行数を制限するようなサンプルが役に立った。セマフォで待たされる所も Async でスレッド制御を戻せるのが素敵。
でもTaskをすべて抱えるサンプルコードなので、さらに桁が多い状況ではちゃんと考えないといけない。だいたい10万件ぐらいが対象の時に役に立つパターン。

SQL Azure DataSyncを除外して各テーブルのレコード数調査

http://engineermemo.wordpress.com/2011/04/30/sql-azure-%E3%81%A7%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%AE%E3%82%B5%E3%82%A4%E3%82%BA%E3%82%92%E5%8F%96%E5%BE%97/ にあるものをベースに、DataSync 関連のテーブルを除去したかったので以下のようなので調査。
   1:  SELECT
   2:      OBJECT_NAME(sys.indexes.object_id) AS object_name,
   3:      sys.indexes.name,
   4:  --    sys.indexes.type_desc,
   5:      sys.dm_db_partition_stats.row_count,
   6:      SUM(sys.dm_db_partition_stats.reserved_page_count) * 8.0 / 1024 AS [Size (MB)]
   7:  FROM
   8:      sys.dm_db_partition_stats
   9:      LEFT JOIN
  10:      sys.indexes
  11:      ON
  12:      sys.dm_db_partition_stats.object_id = sys.indexes.object_id
  13:      AND
  14:      sys.dm_db_partition_stats.index_id = sys.indexes.index_id
  15:  WHERE OBJECT_NAME(sys.indexes.object_id) NOT LIKE '%_dss_tracking'
  16:      AND sys.indexes.name NOT LIKE 'PK_DataSync%'
  17:      AND sys.indexes.type_desc = 'CLUSTERED'
  18:  GROUP BY
  19:      sys.indexes.object_id,
  20:      sys.indexes.index_id,
  21:      sys.indexes.name,
  22:  --    sys.indexes.type_desc,
  23:      sys.dm_db_partition_stats.row_count
  24:  ORDER BY
  25:      OBJECT_NAME(sys.indexes.object_id),
  26:      sys.indexes.object_id,
  27:      sys.indexes.index_id

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, “Courier New”, courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

当初は http://blog.clicdata.com/2012/07/31/table-row-count-and-size-in-sql-azure/ にあるSQL文を試していたのだが、2倍の数値が出て少し悩んでしまった。どういう理由で row_count の値をSUM で足したりしてるの…

Automating Windows Azure SQL Database Backup

http://msdn.microsoft.com/en-us/library/jj900675.aspx

Azure blob storage にエクスポートするための方法が書いてある。とりあえずのサンプルはコンソールコマンドを作成するためのコードになっている。

PowerShellコマンドレットにしとくと後で便利そう

今後はODBCがOLE DBよりも推奨される

http://www.infoq.com/jp/news/2011/09/OLE-DB-End

SQL Azure へオンプレミスSQL Serverからリンクサーバー設定をしようと Linked Servers to SQL Azure http://blogs.msdn.com/b/sqlcat/archive/2011/03/08/linked-servers-to-sql-azure.aspx を参照していたら、ODBC 利用だったので、なぜ OLE DB でないんだろう?と疑問に思ったのがきっかけ。

昔はアプリケーションからのデータアクセス手段がいろいろ必要だったけど、最近はどんどん WebAPI 化している。リンクサーバー とかSSISとか、データベース周辺以外での出番はあるかなあ。

フレッツ網向け Azure Virtual Network 設定の調整

今までAzureから提供された設定のまま運用していたのを、FletsにあわせてMTUを調整してみた。(前回の記事: https://kamiyn.wordpress.com/2012/10/10/windows-azure-virtual-network-%E3%82%92-cisco-asa-5505-%E3%81%A7%E6%A7%8B%E6%88%90%E3%81%99%E3%82%8B/)

http://www.cisco.com/cisco/web/support/JP/102/1020/1020854_fragmentation-j.html#Issues

フレッツ網のMTUは1454であるので、こんな感じで設定を投入

asa5505# config t
asa5005(config)# mtu outside 1454
asa5005(config)# sysopt connection tcpmss 1300

少なくとも2ヶ月前に計測した時の10倍、30Mbps程度のスループットが出てる! (これだけが原因かどうかまでは特定していませんが)

AzureVPN_フレッツ網スループット