タグ

databaseに関するhomajyuのブックマーク (62)

  • http://www.2ch-search.net/blog/3

  • データベースの内部動作を知る

    SQLのプログラミングは奥が深い。特にパフォーマンスの観点から、そう言えるだろう。 みなさんご承知の通り、同じ結果を出すプログラムでも、SQLの書き方次第で処理時間に何倍もの差が生じ得る。効率の悪いSQLを書いてしまう原因は、多くの場合、リレーショナルデータベースの内部動作やアプリケーションに関する理解不足である。両者をよく知った上で最適なSQLを書けるようになることは、システムエンジニアとしての重要なスキルの一つである。 特集『基礎から理解するデータベースのしくみ』では、リレーショナルデータベースの内部動作について、基的な部分を分かりやすく解説している。SQLプログラミングに役立つことはもちろん、SQLチューニングやデータベース設計のための基礎知識としても不可欠だ。 イントロダクション ブラックボックスのままでいいの? Part 1:SQL文はどのように実行されるのか SQL実行までの

    データベースの内部動作を知る
  • MySQLをmaster:slave=1:1構成にして参照をslaveに向けるのがなぜ良くないか - 酒日記 はてな支店

    MySQLのmasterとslave 1:1にして参照をslave向けるのってやりたがる人多いみたいだけど、性能たいして上がらない割に可用性落ちるだけだからやめようキャンペーン 2011-06-19 00:16:30 via YoruFukurou MySQL はレプリケーションが簡単に構成できるのですが、時折 master 1台 に対して slave 1台、更新処理は master に、参照は slave に、という構成を目にします。 個人的にはこの構成はお勧めでないと思っているので、その理由を考察してみます。 1. 可用性が落ちる 当然ですが、master, slave のどちらが落ちても影響を受けるために可用性が低下します。 2. 全体の性能がほとんど上がらない master 1台ですべてのクエリを処理する場合と比べて、可用性が落ちる引き換えとして見合った性能向上が得られるか、という

    homajyu
    homajyu 2011/06/20
    masterを更新系、slaveを参照系にして1対1の構成にするのはよくないという話
  • SQL Indexing and Tuning e-Book for developers: Use The Index, Luke covers Oracle, MySQL, PostgreSQL, SQL Server, ...

    A site explaining SQL indexing to developers—no crap about administration. SQL indexing is the most effective tuning method—yet it is often neglected during development. Use The Index, Luke explains SQL indexing from grounds up and doesn’t stop at ORM tools like Hibernate. Use The Index, Luke is the free web-edition of SQL Performance Explained. If you like this site, consider getting the book. Al

    SQL Indexing and Tuning e-Book for developers: Use The Index, Luke covers Oracle, MySQL, PostgreSQL, SQL Server, ...
  • IDEA * IDEA

    ドットインストール代表のライフハックブログ

    IDEA * IDEA
  • replicationしてるMySQLのslave増設手順

    こんにちは、hiroshiです。おひさしぶりですね。 stoneが書いたhadoopの記事が打ち合わせとかで「見ましたよ。評判ですよ。」とか言われてジェラシーいっぱいです。 僕もがんばります。目指せホッテントり! といっても、僕だと書けることに限界があるので、今日は半定常作業のMySQLの増設作業について書こうと思います。 下図のように、master1台←slave2台がLVS+keepalivedで負荷分散構成されているDBがあるとします。 この構成の組み方にしようかと思ったのですが、これはググったらいっぱいあったのでホッテントリは狙えないと思ってやめました。 なので、今回のテーマは「このテーブルはwriteは余裕だけどreadがきつくなってきたからslaveを増設しなければ!」となった場合のslaveを増設する手順について書いてみます。 下図のslaveCを追加するぞ!の場合です。 ※

    replicationしてるMySQLのslave増設手順
  • 大人のためのInnoDBテーブルとの正しい付き合い方。

    InnoDB関連でよくある質問のひとつに「テーブルのメンテナンスは何をすればいいんですか?」というものがある。InnoDBMySQL 5.5でデフォルトストレージエンジンとなるため、InnoDBのテーブルメンテナンス計画を立ようと思う機会も増えることだろう。そこで、今日はInnoDBのテーブルメンテナンスの各種方法となぜそうしなければいけないかという理由を解説しようと思う。 ANALYZE TABLEテーブルメンテナンスの代名詞といえば、インデックス統計情報の更新ではなかろうか。運用を続けるうちに、知らず知らずインデックス統計情報が狂ってしまい、思うような性能が出ない。RDBMSにはそのような問題がつきものであるが、InnoDBの場合、ANALYZE TABLEは不要である。なぜなら、InnoDBが自発的に統計情報を更新するからだ。InnoDBは以下の条件に適合すると、ANALYZE T

    大人のためのInnoDBテーブルとの正しい付き合い方。
    homajyu
    homajyu 2010/09/27
    InnoDBの取扱について
  • MySQLのインデックスを学ぶ (1) - 刺身☆ブーメランのはてなダイアリー

    実践ハイパフォーマンスMySQL 第2版とLinux-DBシステム構築運用入門を読んで、 MySQL のインデックスについて勉強しなおしている。理解が曖昧だった部分の知識を深められたり、自分の間違いに気づけたりして、とても収穫が多い。 フルテーブルスキャンとフルインデックススキャン Linux-DBシステム構築運用入門 P185 に書いてあるケース。インデックスを利用してても対象レコード数が多いとランダムI/Oが大量に発生して遅くなる。読むべきレコード数が多いのならばフルテーブルスキャンのほうがI/O一回で多くのブロックを読み込めるので速い。 IGNORE INDEX ヒントを与えてパフォーマンスを改善するという例があった。 マルチカラムインデックスと範囲検索 SELECT * FROM users WHERE a = ? AND b >= ? and (c IS NULL OR c >=

    MySQLのインデックスを学ぶ (1) - 刺身☆ブーメランのはてなダイアリー
    homajyu
    homajyu 2010/09/21
    インデックスについてのまとめ
  • 地獄のようによくわかるSQLテーブル結合 - こせきの技術日記

    テーブルのJOINが苦手でしたが、この例を思いついてからは、すっきりくっきり理解できるようになりました。むしろ頭から離れません……。 ※ INNER、OUTERは飾り。省略できる。 INNER JOINJOIN LEFT OUTER JOIN → LEFT JOIN RIGHT OUTER JOIN → RIGHT JOIN ※ ON ...=... をまとめて USING(属性) と書ける。 ※ 何で結合するか言うまでもない時は、NATURALを指定すると勝手にJOINしてくれる。NATURALにJOINして……。 ※ WHEREは結合した結果に作用する。 ※ 現実には上図のように1対1で結合しません。 ※ おまけ。CROSS JOIN。 こんなの使いません。 ブクマ用画像。

    地獄のようによくわかるSQLテーブル結合 - こせきの技術日記
    homajyu
    homajyu 2010/09/16
    SQLのテーブル結合の解説 (つд`)゜。
  • 漢(オトコ)のコンピュータ道: モダンなMySQLの開発環境の構築方法

    遅ればせながら モダンな Perl の開発環境の構築方法 モダンなPHPの開発環境の構築方法 モダンなPythonの開発環境の構築方法 モダンな Java の開発環境の構築方法 に続いてみる。MySQLは言語じゃないけど。 コンパイラ等MySQLをソースからビルドするのでなければコンパイラ等は必要ないけど、どうせアプリ開発に必要なので「MySQLなんかいつでもハックしてやるぞ!」という意気込みを示すために入れておこう。OSXならXcode、LinuxならGCC。最新のソースコードじゃないとヤダ!という粋な人にはBazaarのインストールもお勧めしたい。Bazaarは言わずと知れた分散バージョン管理システムであり、MySQL開発チームも採用している。最新のソースコードは次のコマンドでゲット可能だ。 shell> bzr branch lp:mysql-server/5.1 mysql-5.1

    漢(オトコ)のコンピュータ道: モダンなMySQLの開発環境の構築方法
    homajyu
    homajyu 2010/07/27
    MySQLの開発環境構築
  • 忘れ去られた日本のIT技術~DOAと品質管理 - プログラマの思索

    最近、上流工程のモデリング技術として、DOAを見直している。 その過程で、忘れ去られた日IT技術とその歴史があるように感じた。 考えたことをラフにメモ。 【DOA(Data Oriented Analysis)】 DOAはデータモデリングというモデリング技法、上流工程の設計技術の一つ。 DOAは日独自で発展してきた歴史がある。 椿正明さんのTHモデル。 佐藤正美さんのT字形ER。 渡辺幸三さんの渡辺式DOA。 THモデルは古くは1970年代から発展してきたようだ。 他のDOAも、日で、メインフレーム上の業務システムを開発する経験から育まれてきた。 歴史があるからこそ、DOAを知れば知るほどノウハウがある。 例えば、エンティティにはリソースとイベントの2種類がある。 イベントには必ずタイムスタンプ(日付)が振られて、業務の流れに従ってイベントが変わる。 リソースとイベントの個数を比較

    忘れ去られた日本のIT技術~DOAと品質管理 - プログラマの思索
    homajyu
    homajyu 2010/07/12
    DOAについて 参考書籍のリンク有り
  • MySQL のNULL ではまったことあれこれ - LukeSilvia’s diary

    MySQL に限らず、SQL のNULL の仕様には何回か「えっ」と驚くことがあったのでメモしておこうと思います。5.1 版の日語マニュアルがなかったものについては、4.1 のマニュアルを参照しました。 そもそもNULL は何を意味するか NULL は未定義または、不明を意味する。「電話番号を持たない」ということを表現する場合は、NULL ではなく、空の文字列を使う。 NULL 値というものを SQL 初心者はよく混乱します。SQL 初心者は、多くの場合、NULL が空文字 "" と同じであると考えてしまいます。これは違います。たとえば、以下のステートメントは完全に別のものです。 mysql> INSERT INTO my_table (phone) VALUES (NULL); mysql> INSERT INTO my_table (phone) VALUES (""); どちらのス

    MySQL のNULL ではまったことあれこれ - LukeSilvia’s diary
    homajyu
    homajyu 2010/03/23
    Nullの取扱について。
  • 403 Error - Forbidden

    403 Error 現在、このページへのアクセスは禁止されています。 詳しくは以下のページをご確認ください。 403ERRORというエラーが発生します

  • 漢(オトコ)のコンピュータ道: InnoDBでCOUNT()を扱う際の注意事項あれこれ。

    InnoDBを使うとき、MyISAMと比較して度々やり玉に挙げられるポイントとして「COUNT()が遅い」というものがある。確かにInnoDBにおいて行数を弾き出すのにはテーブルスキャンが必要なのだが、そもそもMyISAMのCOUNT()が速い(テーブルの行数を保持してる)のが特殊なのであって、InnoDBが遅いわけではないのである。とはいえ、高速なCOUNT()については需要が多く、この問題には多くの人取り組んでおられるようだ。しかしながら、COUNT()のチューニングについては未だ語られていない点があるように見受けられるので、今日はCOUNT()のチューニングについて解説しようと思う。 COUNT(*)、COUNT(col)、COUNT(1)の違い基的なことではあるが、COUNT(*)とCOUNT(col)では意味が異なるため、異なる結果が返される場合がある。COUNT(*)はフェッ

    漢(オトコ)のコンピュータ道: InnoDBでCOUNT()を扱う際の注意事項あれこれ。
    homajyu
    homajyu 2010/03/09
    InnoDBのcount()が遅いときにとる方法。セカンダリインデックスの活用。
  • MYSQL_PS1: 6 Examples to make your mysql> prompt like Angelina Jolie

    MYSQL_PS1: 6 Examples to make your mysql> prompt like Angelina Jolie A while back we tried to customize unix prompt to look like Angelina Jolie. Oh boy, didn’t I fail miserably in that attempt? Well, that didn’t stop me from trying an extreme makeover for mysql> prompt. Let us face it. The following mysql> prompt is boring. Nobody wants to see it. Let us change the default mysql> prompt to somethi

    homajyu
    homajyu 2010/02/24
    MySQLのプロンプトをアンジェリーナ・ジョリーっぽくするw
  • �Linux/DB Tuning (DevSumi2010, Japanese)

    NTT Tech Conference 2022 での「Dockerからcontainerdへの移行」の発表資料です https://ntt-techconf.connpass.com/event/241061/ 訂正: P2. . 誤: ``` Ship docker run -it --rm alpine Run docker push ghcr.io/ktock/myalpine:latest ``` 正: ``` Ship docker push ghcr.io/ktock/myalpine:latest Run docker run -it --rm alpine ``` 最近勉強を始めたコンテナ技術に関する基礎的な知識をまとめました。 [訂正と注釈] p.27-30: 「Deployment」内の「Version: 1」 => 「Version: 2」 p.37: 「終了コード

    �Linux/DB Tuning (DevSumi2010, Japanese)
    homajyu
    homajyu 2010/02/19
    DBのチューニングについて Slide
  • MySQL管理者最速マスター

    巷ではプログラミング言語の最速マスターが流行ってるので、MySQLも参戦。ただし管理者向け。 まずはダウンロードとインストールダウンロードサイト http://dev.mysql.com/downloads/ バイナリにはインストールパッケージ(Windows=MSI、Mac=DMG、Linux=RPMとか)とアーカイブ(*NIX=tar.gz/Windows=zip)があるけど、初心者は黙ってパッケージをチョイス。インストールはウィザードに従うだけ。英語だけどそこはガマン! パッケージリポジトリがあるOSを使ってるなら、リポジトリからインストールするのもありだ。例えば、 shell> sudo yum install mysqlとか shell$gt; sudo apt-get install mysqlとか。これは楽チンだけどMySQLのバージョンがちょっと古くなるので注意。 もちろん

    MySQL管理者最速マスター
    homajyu
    homajyu 2010/02/04
    管理者として行う項目のまとめ
  • データベースサーバを複数台構成とか2010年代には流行らない - blog.nomadscafe.jp

    奥一穂さんの「ウェブアプリケーションサーバを複数台構成とか2010年代には流行らない」にフォローのような感じで。 例によってタイトルは煽りです。 奥一穂さんのエントリーでは、「5,000万PV/Month」という見積もりでアプリケーションサーバの台数を1台と計算していますが、これからは「1,000万PV/Day」を超えるサイトが多く生まれてくると予想しています。どんなサイトかというと、mixiアプリやモバゲーなどにソーシャルゲームを提供するサイトです。 ソーシャルゲームサイトのキャパシティプランニングについては中澤さんのエントリーが参考になります。 The Art of モバゲー Capacity Planning The Art of Mixi-mobile-appli Capacity Planning 最も人気がでた場合には数千万から数億PV/Dayという数字がならんでいます。怖い怖

    homajyu
    homajyu 2010/01/12
    データベース鯖の台数の検討方法
  • opt3 R0.9.1 - ソフトウェア

    説明 opt3は『Windows Mobileで動作するSQLiteをエンジンにした簡易データベースソフト』です。 ★2009/12/29 R0.9.1を公開しました。 [1] カスタムカード項目に参照型を追加し、参照SQL式を入力するための入力項目「引数」を追加しました。 [2] リストフォーム定義画面に"条件"シートを追加し、結合式を入力できる様にしました。 [3] メニューアクションに"SQL実行"を追加し、メニューアクション"SQL実行"の独自コマンドを追加しました。 (これに伴い、コンソール画面とsqlitew.exeの独自コマンドを追加しました。) [4] コンソール画面のメニューに「SQLを開く」「SQLを開いて実行」を追加しました。 [5] カスタムカード項目の日付型で、カレンダー選択ボタンを表示する様にしました。 <ご注意:R0.9.1より前のバージョンの

    homajyu
    homajyu 2010/01/04
    SQLiteをエンジンにした簡易データベースソフト
  • MySQLのデータベースで差分を取る·Mysql Database Structure Compare MOONGIFT

    Mysql Database Structure CompareはRubyWindows/Linux向けのオープンソース・ソフトウェア。データベースを使ったWebシステム開発が当たり前になりつつある。だがデータベースの構造におけるバージョン管理は煩雑なケースが多い。 RubyだがGUIアプリケーション 特に運用時におけるスキーマ変更を適切に行っていないばかりに余計なエラーを起こすようなケースもある。そこで使ってみたいのがMysql Database Structure Compareだ。Mysql Database Structure Compareは二つのデータベースを比べてその差分を抽出するソフトウェアだ。 比較元、先ともにホスト、ユーザ名とパスワード、データベース名、ポート番号を指定できるようになっている。一つがローカル、一人はリモートであっても利用できる。比べた結果はSQLとして

    MySQLのデータベースで差分を取る·Mysql Database Structure Compare MOONGIFT
    homajyu
    homajyu 2010/01/04
    MySQLのシステム内容についての差分を調べる