タグ

2013年12月20日のブックマーク (4件)

  • 基礎から理解するデータベースのしくみ(5):ITpro

    SQL文を実行する際のパフォーマンスに大きな影響を及ぼすものとして,もう一つ,インデックスがあります。インデックスについては,どう定義すべきかというデータベース設計上の問題と,インデックスを有効に使うためのSQL文をどう書くべきかというコーディング上の問題があります。 ここではテーブル設計上の問題を主に取り上げます。SQL文のコーディングについては囲み記事「SQL文を最速にする11のポイント」を参照してください。 インデックスは,テーブルの検索速度を向上させるためのものです。それぞれのSQL文に対して最適なインデックスを定義するのが理想的ですが,実際にはある程度限られたインデックスで,必要なパフォーマンス要件を満たすようにインデックスを定義する必要があります。加えて,どんなSQL文が実際に発行されるのかがあらかじめわかっていない場合は,適当な想定に基づいてインデックスを定義しておかなくては

    基礎から理解するデータベースのしくみ(5):ITpro
  • マルチコア時代に備えて本気でメモリモデルを理解しておこう - リオーダー & finalフィールド 編 - - かとじゅんの技術日誌

    長い文章になってしまったので、概要だけ先に書きます。 以下のJavaプログラムは、常に上から下に順番に命令が実行されると思いますか?つまり、aに1が格納された後に、bに2が格納されると思いますか? 実は場合によってはこの実行順序が入れ替わる場合があります。これはJavaの言語仕様として定義されていることです。これを考慮しないと信頼性のある並行処理は実装できません。 気になる人は以下を読んでみてください。 a = 1; b = 2; すでにインターネットは社会インフラ化しています。ソーシャルネットワークで多くの人とコミュケーションやコラボレーションできる時代で、個人が情報を作り消費することは当たり前になってきています。そして、インターネット上のコンテンツは増加の一途を辿っています。「情報爆発」なんて言葉も耳慣れた言葉になりましたが、その問題解決のためにMapReduceなどの分散処理技術に注

    マルチコア時代に備えて本気でメモリモデルを理解しておこう - リオーダー & finalフィールド 編 - - かとじゅんの技術日誌
  • マルチコア時代に備えて本気でメモリモデルを理解しておこう - メモリバリア編 - - じゅんいち☆かとうの技術日誌

    このエントリを読む前提条件として、マルチコア時代に備えて気でメモリモデルを理解しておこう - リオーダー & finalフィールド 編 - - じゅんいち☆かとうの技術日誌を読んで、リオーダーとは何かを理解していることとします。 前回のおさらいをすると、 プログラムの実行順序は、リオーダーが許可される場合と禁止される場合がある。並行処理ではリオーダーを想定しなければ、処理結果の整合性が確保できない。(特にマルチプロセッサ環境) リオーダーを禁止して、可視性を保証する。(finalフィールドはコンストラクト時に完全に初期化され、コンストラクト後はスレッドから見えるようになる) でした。 リオーダーについて理解できたら、今度はメモリバリア命令でスレッド毎に扱うメモリと、大域のメインメモリとのメモリI/Oについて見ていきたいと思います。メモリバリアが理解できれば、以下のソース*1のスレッドがな

    マルチコア時代に備えて本気でメモリモデルを理解しておこう - メモリバリア編 - - じゅんいち☆かとうの技術日誌
  • 定番!Rubyでワンライナー書く時の基本テク - Qiita

    ruby -e scriptを使うことで、ワンライナーを書くことができます。 アドホックな調べ物やフィルタ用途に便利なので日頃からよく使っています。 ただ、そのわりに案外書き方をド忘れてしがちなので、改めてまとめておきたくなりました。 標準出力に吐き出す お馴染み、Kernel.#puts を使います。 エラー出力に吐き出す Kernel.#warn を使います。 requireほげほげって書くの面倒臭い -rオプションを使います。複数指定できます。 例えば、jsonとopen-uriをrequireして使う場合。

    定番!Rubyでワンライナー書く時の基本テク - Qiita