忍者ブログ
このブログは、拡張現実 及び 仮想現実 が使用された最新の情報と事例などを掲載しています。---This blog publishes latest information and the case where AR (Augmented Reality) and VR (Virtual Reality) are used, etc.
2024 . 05
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • Profile
    NAME:
    Etsuji Kameyama (亀山悦治)

    Profile:
    拡張現実(AR)や仮想現実(VR)の技術は、BtoC・BtoBの分野での活用が始まっている。このブログではAR、NUI、各種センサーに関わる最新の事例や技術を中心に紹介。
    ARやVRのシステムやソリューションの導入を検討されている方は、こちらか、私までご連絡ください。エンターテーメント分野、印刷分野、家具や機器の配置シミュレーション、操作支援、などへの技術選定、アプリケーション開発、運用、コンサルテーションに対応します。

    -私が関係しているサイト
    - twitter (@kurakura)
    - facebook (ekameyama)
    - LinkedIn (Etsuji Kameyama)
    - ITmediaマーケティング
    - SlideShare (ekame)
    - paper.li (kurakura/ar)
    - YouTube (ekame)
    - myspace Music (KURA KURA)
    - The 25 Most Tweeting About AR
    - Twitter most popular
    - AR Mind Map
    - AMeeT-拡張現実の紹介(ニッシャ印刷文化振興財団)
    - デジタルサイネージとAR(デジタルサイネージ総研)
    - Capital newspaper
    - Pingoo
    - 話題沸騰のAR/VRがスマートワークを進化させる(スマートワーク総研)

    インターネット学校「スクー」の90番目の講師
    AR, VR, MR + HMD, Smart Glass が生活とビジネスを変革
    Contact me 問合せはこちら
    AR活用相談、AR関連セミナー講師などの依頼についてご連絡ください。
    SSL標準装備の無料メールフォーム作成・管理ツール | フォームメーラー
    はじめてのAR(拡張現実)アプリ導入
    ARアプリの基本的な知識から選定方法まで身に付けることができる資料。
    Ninja Search
    Google Search
    カスタム検索
    アーカイブ
    Present number of visits
    Counter
    感覚デバイス開発

    あらゆる産業において、様々な新規デバイス・システム開発や新規サービスを創り出すべく注目が集まっている。とくにセンサー素子開発やセンサ・センシングシステムなどの研究開発者の方、ロボット開発における感覚器代替分野の研究者の方、関連業界の方々へ。
    よくわかるAR〈拡張現実〉入門

    次世代のプロモーション手法として脚光を集めるほか、エンターテイメントやコミュニケーション、教育や医療のツールとして幅広い活用・発展が期待されているARの世界がよくわかる入門書が電子書籍で登場
    Amazon検索
    Amazon
    ×

    [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

    トランザクション領域の制限があり、トランザクションログがいっぱいになってしまう。
    http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4&current_page=1&disp_mode=4&detail_mode=1&message_id=19322

    そこで、トランザクションモードをRECOVERY FULL から BULK_LOGGED に一旦変更し
    その後、またBULK_LOGGED からRECOVERY FULL に戻すことで
    トランザクション領域制限の問題をクリアできました。

    >> フルモードから一括記録モードに変更する前に一旦バックアップが取られ
    >> 一括記録モードからフルモードに変更する前にバックアップが取られて
    >> 保存されるのでしょうか??
    >バックアップは明示的に取得しない限り自動ではとられません。
    >
    >一括ログ記録に変更するとトランザクションログに CheckPoint が生成されるだ
    >けで、変更はありません。
    >
    >復旧モデルを一括ログ記録に変更すると日時指定の復旧ができなくなりますので、
    >そのあたりは検討してください。

    PR

    http://www.atmarkit.co.jp/fdb/rensai/sqlstune01/sqlstune01_1.html
    ・SQL Serverのチューニングについて
    ・動的メモリ管理のメカニズム


    http://www.atmarkit.co.jp/fdb/rensai/sqlstune01/sqlstune01_2.html
    ・システム管理者が行うチューニング作業
    ・メモリの使用状況の監視
    ・SQL Serverの監視機能を使用する

    ◎DBCC SQLPERF(LRUSTATS)が返す値の意味と推奨される閾値
    物理メモリの空きが少なくなると、メモリ プール内のバッファキャッシュに必要なデータページが見つからず、ページングが発生し、物理ディスクへのIOが増加することになります。
    各値が閾値を超えるようになった場合、物理メモリが不足していることが考えられますので、メモリの追加を検討します。また、フリーバッファプール内の現在のキャッシュバッファ数を示すFree Buffersが0の場合も、ページングが発生した状態になりますので、メモリを追加


    http://www.atmarkit.co.jp/fdb/rensai/sqlstune01/sqlstune01_3.html
    ・混合サーバ構成時のメモリチューニング
    ・物理メモリの予約

    ◎通常、サーバをSQL Server専用で稼働させる場合は、これらの設定を変更する必要はありませんが、1台のサーバに複数のSQL Serverインスタンスを稼働させる場合やIIS…
    ◎夜間は分析用のSQL Serverインスタンスで、データロードからOLAPストアの再構築のために多くの負荷がかけられるような場合…

     

    バッチ処理速度を改善するため、SQLServer2005からSQLServer2005にUPすることを検討していたが、よく考えてからにした方が良さそう。最適な環境が何であるか…下記のサイトは参考になった。

    http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=851335&SiteID=7
    Windows Vista(RC1)
    SQL Server 2005 Express(SP1)
    速度面も問題なく、動作しています。快適です。開発環境になにか問題があるようです。


    http://www7.big.or.jp/~pinball/discus/sqls/30176.html
    SQLServer2005にしたら処理速度等が上がるかなと安易に考えていたのですが…

    http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4&current_page=1&disp_mode=4&detail_mode=1&message_id=7568
    つまり、WHERE において、OR を指定するより UNION を
    指定したほうが早い場合があるということです。
    ところで、OR と同様によくつかうものに、IN がありますね。

    データベースモデル毎のトランザクションログについて
    SQL Serverのトランザクションログは、運用上けっこう扱いが難しいと Ver6.5の時から感じている。大量データのバッチ処理では、数GB以上が必要になることがあるが、運用してみないと実際に必要とされるサイズは分らない。自動拡張は親切なようで、不親切だと思う。使い始めは楽だが、その後が大変。十分な知識と調査が予め必要だと思う。

    下記のサイトは参考になった
    http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4&current_page=1&disp_mode=4&detail_mode=1&message_id=12789
    http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4&current_page=1&disp_mode=4&detail_mode=1&message_id=12813
    http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4&current_page=1&disp_mode=4&detail_mode=1&message_id=12815
    http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4&current_page=1&disp_mode=4&detail_mode=1&message_id=12820
    http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4&current_page=1&disp_mode=4&detail_mode=1&message_id=12834
    http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4&current_page=1&disp_mode=4&detail_mode=1&message_id=12852

    http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4&current_page=1&disp_mode=4&detail_mode=1&message_id=13235
    ひとつのクエリーの中で集計関数を繰り返し利用する
     場合、パフォーマンスは落ちないのか ?

    http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4&current_page=1&disp_mode=4&detail_mode=1&message_id=13237
    早かったですが、その差は数ミリ秒でした。

    やはり実行プランが表示する通り、SUMの結果を使い回しているようですね。

    CHAR と VARCHARは、どちらかというとCHARの方が優れているように言われているが、VARCHARの方がいろいろな面で使いやすいと個人的には思う。

    http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4&current_page=1&disp_mode=4&detail_mode=1&message_id=14849
    ■質問
     CHAR と VARCHAR (NCHAR/NVARCHAR) はどのように
     使い分けられていますでしょうか ?

     * 基本的に CHAR を利用している
     * 基本的に VARCHAR を利用している
     * 必要な場合に CHAR を利用している
    - 固定長
    - 頻繁に更新がある
    - インデックスに利用している

    ■背景
     データベースを設計する場合、複雑性を下げる意味で、
     データタイプを統一する場合があります。
     CHAR, VARCHAR を使い分けるよりも、VARCHAR で
     統一してしまうというものです。

     また、可変長の文字列を CHAR で扱うと、あちこちで、
     TRIM 処理が必要になります。

    ■例
    1. VARCHAR に統一
     サーバーに十分なパフォーマンスがあるので、
     CHAR にするメリットがない。

    2. CHAR に統一
     パフォーマンスや設計の経験上、CHAR にしている。
     TRIM による適宜、末尾の空白を除去している。

     

    Null を許可するデータタイプの選択は ?
    http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4&current_page=1&disp_mode=4&detail_mode=1&message_id=14847
    ■質問
    システムを設計する場合、Null を許可する引数のデータタイプは
    なにを使われていますか ?

    * 文字列 string
    * Null を許可する専用データタイプ
    * SqlInt16 など Sql の提供するデータタイプ

    . ストアドプロシージャの引数まで、文字列として処理し、
     クエリーをかける段階で、CAST または、CONVERT し、
     適切なデータ型にする。

    2. ビジネス層までは、文字列として処理し、データ層に渡す段階で、
     SqlInt16 などに変換する

    そもそも、Null をできるだけ許可しないという方法もあるかと思います。

    ★DBCC DBREINDEX(テーブル名) を実行したところ、バッチ処理の速度が半分の時間で処理されるように
    なった。効果が高い(2007/1/17)
    「SQL Server2005の次のバージョンからは、削除される可能性があるので、新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 代わりに ALTER INDEX を使用してください。」とのことです。



    DBCC SHOWCONTIG と DBCC DBREINDEX について
    http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4&current_page=1&disp_mode=4&detail_mode=1&message_id=15627
    インデックスの再構築を実行しましたがスキャン密度が改善されません。
    【インデックスの再構築実行】
    USE MKGWare
    GO
    DBCC DBREINDEX (てーぶる名,'',60)
    GO

    http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4&current_page=1&disp_mode=4&detail_mode=1&message_id=15636
    インデックス ID が 0 は ヒープ(実データ、インデックスではない) なので、断片化は解消できません。
    どうしても解消したい場合は、bcp とか DTS とかでデータをファイルにエクスポートして、
    インポートしますが、データ量が 5 エクステントなので、断片化を解消しても、速度はほとんど
    変わらないと思います。それよりも、次のコマンドを実行して、
    他のインデックスが断片化しているかどうかを調べた方がよいと思います
    (速度が遅くて困っているのであれば、ですが...)。
    DBCC SHOWCONTIG('テーブル名') WITH ALL_INDEXES

    http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4&current_page=35&disp_mode=4&ispre=0&mid=7682

    http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4&current_page=1&disp_mode=4&detail_mode=1&message_id=7663
    DBCC INDEXDEFRAGを実行すればよいです。
    なお、やたらめったにインデックスの再構築をするのではなく、インデックスの状態を確認してからにしたほうがよいとおもいますが。DBCC SHOWCONTIG と実行して、スキャン密度が低いテーブル、論理スキャンフラグメンテーションの大きなテーブル、ページ数の多いテーブル、アプリケーションからの利用が多いテーブルにはというところをチェックしてみてください。

    効率的なインデックスの作成について
    http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4&current_page=1&disp_mode=4&detail_mode=1&message_id=7421

    DBCC SHOWCONTIG('テーブル名') WITH ALL_INDEXES
    で調べて
     DBCC INDEXDEFRAG (データベース名,テーブル名,インデックス名)
    でインデックスの断片化を実行

    無理をして一つの巨大なSQLを組み立てるより、分割して効率よく処理した方がデータ量による処理時間の増加率が把握しやすい。下記のサイトで説明されていることは、もっともだと思う。

    http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4&current_page=1&disp_mode=4&detail_mode=1&message_id=16173
    私のSQL Server(のクエリ)の師匠からは
    ・クエリを考えるときには「データの束」を意識する
    ・Notは極力使わない
    ・カーソルも極力使わない
    ・Or In も極力使わない
    ・ネストの深いサブクエリやUnionを使うぐらいなら一時テーブルを使え
    というようなアドバイスを受けている

    http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4&current_page=1&disp_mode=4&detail_mode=1&message_id=16176
    ネストの深いサブクエリ等ではレコードを生成する都度サブクエリを実行する?
    ため、最悪「サブクエリ1回の実行時間×レコード数×テーブル参照時間」が
    必要であるのに対して、一時テーブルを作成するケースではテーブルを参照
    するだけなので「サブクエリ1回の実行時間+レコード数×テーブル参照時間」
    となり、生成されるレコード数が多いほど顕著に差が出た様子です。
    20万レコード程度のテーブルから結果を集計して抽出するのにあたり、
    1分近くかかっていたものが一時テーブルの利用で一気に1秒以下まで
    短縮できた実績があります。

    http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4&current_page=1&disp_mode=4&detail_mode=1&message_id=16190
    ・結合する前にフィルタをかける。
    ・フィルタは絞り込み効果の高い順にかける。

    http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4&current_page=1&disp_mode=4&detail_mode=1&message_id=16196

    実際に同じような現象が発生した。Windos2003 Server  2CPU Xeon で2GBの物理メモリ、WindowXP Pro Pentium4で1GBの物理メモリの2台で試したが結果は後者の方が良かった。おかしな現象である。

    http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4&current_page=1&disp_mode=4&detail_mode=1&message_id=16686
    開発用のノートPCやデスクトップPCで動作させるより,
    実機として用意したサーバーPCの方が遅くて悩んでいます。

    http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4&current_page=1&disp_mode=4&detail_mode=1&message_id=16689
    特に何か根拠があるわけではないのですが、P4ベースのCPUになってから
    どれを使ってもSQL Serverの処理が遅くなったような感じがします。
    当時はなぜかPⅢベースのマシンの方がP4ベースのマシンより
    パフォーマンスが出ていたので、手に入るギリギリまでPⅢベースの
    マシンを導入していた記憶があります。

    http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4&current_page=1&disp_mode=4&detail_mode=1&message_id=16693
    う~ん、これだと疑わしいのは RAID かな。
    それと Xeon 2.8G ってことは HyperThreading が有効になっていると思われます。

    http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4&current_page=1&disp_mode=4&detail_mode=1&message_id=15373
    本番サーバ :SQL2K sp2 CPU2個 メモリ2G RAID5
    テスト機  :SQL2K SPなし CPU1個 メモリ256MB
    と言う両方のマシンで同じDBに対してあるクエリーを実行
    した時に、テスト機の方が2時間のところを、本番機は20時間
    たっても終わらないという状況です。
    SQLSERVERのパラメータは同じ設定になっています

    http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4&current_page=1&disp_mode=4&detail_mode=1&message_id=15375
    max degree of parallelismは確か規定値は0のなんで
    積んでいるだけのCPUを使うと認識しています。

    Windows OSのメモリ管理の仕様も関係していると思うが、メモリを幾らつんでも、それなりの設定をしないとメモリ増設の効果が得られない気がする。1GBの物理メモリだと、SQL Serverはせいぜい500MB程度しかメモリを消費しないが、2GBだと1.5GB位まで使用し、縮小されないままとなる。

    http://www.sqlpassj.org/bbs/ml_disp.aspx?forum_id=4&current_page=1&disp_mode=4&detail_mode=1&message_id=16896
    (SQLを発行)、SQLServerのメモリ使用量がどんどん増加してしまいます。
    SQLServerのメモリ使用量が開放される様子がありません。

    【SQL】
    select
    SUBSTRING(CONVERT(char,DATEADD(m,-6,'2006/5/01'),112),1,6) AS MAE6,
    SUBSTRING(CONVERT(char,DATEADD(m,-5,'2006/5/01'),112),1,6) AS MAE5,
    SUBSTRING(CONVERT(char,DATEADD(m,-4,'2006/5/01'),112),1,6) AS MAE4,
    SUBSTRING(CONVERT(char,DATEADD(m,-3,'2006/5/01'),112),1,6) AS MAE3,
    SUBSTRING(CONVERT(char,DATEADD(m,-2,'2006/5/01'),112),1,6) AS MAE2,
    SUBSTRING(CONVERT(char,DATEADD(m,-1,'2006/5/01'),112),1,6) AS MAE1,
    SUBSTRING(CONVERT(char,DATEADD(m,0,'2006/5/01'),112),1,6) AS TOU,
    SUBSTRING(CONVERT(char,DATEADD(m,1,'2006/5/01'),112),1,6) AS ATO1,
    SUBSTRING(CONVERT(char,DATEADD(m,2,'2006/5/01'),112),1,6) AS ATO2,
    SUBSTRING(CONVERT(char,DATEADD(m,3,'2006/5/01'),112),1,6) AS ATO3,
    SUBSTRING(CONVERT(char,DATEADD(m,4,'2006/5/01'),112),1,6) AS ATO4,
    SUBSTRING(CONVERT(char,DATEADD(m,5,'2006/5/01'),112),1,6) AS ATO5,
    SUBSTRING(CONVERT(char,DATEADD(m,6,'2006/5/01'),112),1,6) AS ATO6

    【結果】
    200511 200512 200601 200602 200603 200604 200605 200606 200607 200608 200609 200610 200611

    参考
    http://oshiete1.goo.ne.jp/kotaeru.php3?q=1310728
    http://www.syswat.com/sqltips.html#tpc5020

    技術者は処理を一度に行うように考えるせいか、巨大なSQLを組み立てることがある。データ量が少なければ何の問題もないのですが、100万件以上になってくると、処理時間が予想不可能になる。
    昔のファイルの扱いのように、データをシーケンシャル読んで処理する方法の方が優れてる場合もあるため、実装方針を決める際にSQLの規約を決めておかないと、結合・システムテストで大変なことになる。

    http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=31846&forum=26&36
    一般的に集計関数を使用したサブクエリを自己結合した場合に、 クエリのレスポンスが著しく悪化することがあります。 その場合集計結果を一時テーブルに出力して、一時テーブルの結合条件にインデックスを作成し
    本体と結合すると大幅にレスポンスが改善すると思います。

    クエリの条件の部分に変数を使用すると処理が遅くなる事があります。
    この場合、検索条件にユニークインデックスが含まれないことが考えられます。
    クエリオプティマイザが変数だとテーブルスキャンを選択するようです。
    回避策としては、ヒント文を入れるといいでしょう。
    http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=20423&forum=26&5

    ヒント文の記述例
     select * from shouhin_M with (index = shouhin_M_index01)

    DBCC DROPCLEANBUFFERS を実行してデータバッファキャッシュをクリアしておかないと、処理時間の正確な比較ができない。
    http://www.sqlpassj.org/bbs/bbs_disp.aspx?forum_id=1&current_page=1&disp_mode=2&detail_mode=1&message_id=2372

    ユーザ定義関数とストアドの速度面での違いが、今ひとつ理解出来ないのだが、結果として「ユーザー定義関数」をむやみに使うと速度が著しく低下することが有った。下記のサイトで説明されたているとおり使い方については要注意だと思った。下記のサイトから、改善のためのヒントが得られた。

    http://comfair2.blog24.fc2.com/blog-date-200512.html

    ■ユーザー定義関数
    最近、性能改善をやっていて身にしみて感じるのは「ユーザ定義関数」 のオーバーヘッドです。 多くの場合、性能改善の対象となるのはバッチ処理だと思いますが、 モノによってはコストの2/3を占めている場合があります。

    「ユーザ定義関数」のコストはアナライザの実行プランに表示されな いため、「なぜ遅いんだろう?」ということになりがちです。 プロファイラでトレースを取ると、「え!なにこれ?」っていうほど表示されるのでなんとなくわかるのですが。

    ユーザ定義関数は、簡単なサブルーチン的な処理(例えば端数処理とか) に使用すると開発効率は上がります。同じようなコードを埋め込まなくてもよいのでメンテナンス性もよいです。しかし、バッチの性能面から
    見た場合は・・・。 「ユーザ定義関数」をどうしてもバッチで使用したい場合はselect句で。from句以降は使用しないこと。 
     
    ■性能改善---時間計測時の注意
    旧処理と新処理の処理時間比較計測・・・性能改善を行った場合は必ず行う作業です。一番大変なのはボトルネックを見つけるのはもちろんなのですが、テストデータを作成することでしょうか。
    実際に蓄えられるデータ件数を見積もって、それと同等のデータを作成するわけです。
    最近は個人データの流出事件等もあってユーザさんのデータを簡単にもらってくるわけにはいきませんから、なおさらです。

    まあ、基本的なことなので、みなさんお分かりのこととは思いますが・・・。処理時間計測を行う場合は必ずリブートまたはサービスの停止/開始を行い、キャッシュをクリアしてから行いましょう。特に行数の多いSQLの場合、構文解析だけで数秒から数十秒かかる場合がありますから、へたをすると2倍くらい計測時間が違ってきます。 

    ■ただいま性能改善中----(3)
    性能改善、やっと終了しました。(というかさせました。) どうも、性能改善というものは凝りだしたらキリがないので困りものです。 今回、最後までボトルネックだったのは、巨大な実績テーブルの扱い方でした。from句のなかでテーブルをjoinする際、できるだけ小さな結果セットにしたほうが速いということは解っていたのですが、これを実現するのが・・・。
    2分ほどかかっていた1つのSQL文が数秒で終わるようになりました。 やはり、性能改善は処理内容がある程度わかっていないと難しいものです。(時間もかかりますし。)

    ■パフォーマンス向上のためのヒント
    SQLServerのパフォーマンスの向上に役立つ7つの方法には以下のようなものがあります。
    1.プロファイラを使用する
    2.パフォーマンスモニタを活用する
    3.クエリアナライザのプラン表示機能を活用する
    4.インデックスチューニングウィザードを使用する
    5.ディスクの使用方法を考える
    6.充分なメモリを確保する
    7.SQLServerの自己管理機能に任せる(下手にさわらない)

    このなかで面白いのは 7.でしょうか。
    下手に設定するとSQLServerは機嫌をそこねたりします。 

    前のページ HOME 次のページ
    Copyright © Augmented Reality & Virtual Reality World | 拡張現実と仮想現実の世界 All Rights Reserved
    Powered by ニンジャブログ  Designed by ピンキー・ローン・ピッグ
    忍者ブログ / [PR]