lynx   »   [go: up one dir, main page]

mysqlに関するmumincacaoのブックマーク (49)

  • 大人のためのInnoDBテーブルとの正しい付き合い方。

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

    大人のためのInnoDBテーブルとの正しい付き合い方。
    mumincacao
    mumincacao 2010/09/27
    今まで MyISAM がめいんだったけどこれから InnoDB も増えそうだし一度確認しとかないとかなぁ...〆(・x・。【みかん
  • ぼくがPDOを採用しなかったわけ(Shift_JISによるSQLインジェクション)

    補足 この記事は旧徳丸浩の日記からの転載です。元URL、アーカイブはてなブックマーク1、はてなブックマーク2。 備忘のため転載いたしますが、この記事は2010年7月1日に公開されたもので、当時の徳丸の考えを示すものを、基的に内容を変更せずにそのまま転載するものです。 補足終わり PHPのデータベース・アクセス・ライブラリPDOは、DB接続時の文字エンコーディング指定ができないため、文字エンコーディングの選択によっては、プレースホルダを使っていてもSQLインジェクション脆弱性が発生します。 追記(2011/06/19) ここに来て急にブクマが追加されはじめていますが、このエントリを書いてから状況が改善しています。PHP5.3.6(2011/03/17)にて、PDOでもデータベース接続の文字エンコーディングを指定できるようになりました。この版で、UNIX版のPHPでは解決しましたが、Win

    ぼくがPDOを採用しなかったわけ(Shift_JISによるSQLインジェクション)
    mumincacao
    mumincacao 2010/07/02
    安全な SQL の呼び出し方でまとめのとこにこっそり描いてあったけど MDB2 を選んだ理由のとこでも PDO について触れてあったほうがよかったのかなぁ? やっぱり PDO 選びたくなっちゃうし…
  • MySQLでクロス集計してみた【1/2】

    マスタテーブルつくって説明すると面倒くさいので、直接商品名、色名をインサートするとし、テーブルを以下のように作っておく。 CREATE TABLE IF NOT EXISTS `history` ( `id` int(5) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `color` varchar(255) NOT NULL, `price` int(10) unsigned NOT NULL, `created` datetime NOT NULL, `modified` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `name` (`name`,`price`,`created`,`modified`,`color`) ) ENGINE=InnoDB DE

    MySQLでクロス集計してみた【1/2】
    mumincacao
    mumincacao 2010/06/21
    くろす集計するときの手順が順番にまとめてあってわかりやすいのです...〆(・ω【みかん
  • MySQL の複合 DELETE 構文 - 日向夏特殊応援部隊

    1ヶ月半ぶりのエントリです。皆さんお元気ですか? 何故か最近 Eclipse ばっかり使ってる zigorou でございます。 12.2.1 DELETE 構文 を見ていたら複合 DELETE 構文ってのが有ったので試してみました。 前提としてレコードがうんざりする程多いテーブル、、、と言う背景があります。 解説 とりあえず次のようなテーブルがあるとしましょう。 CREATE TABLE `diary` ( `id` int(11) NOT NULL AUTO_INCREMENT, `guid` int(11) NOT NULL, `subject` varchar(32) DEFAULT NULL, `body` text, `created_on` datetime DEFAULT NULL, `updated_on` datetime DEFAULT NULL, PRIMARY KE

    MySQL の複合 DELETE 構文 - 日向夏特殊応援部隊
    mumincacao
    mumincacao 2010/05/20
    まにゅある見て DELETE 時に複数てーぶる指定できるのは知ってたけど・・・何が消えるのかわからなくて使ったことないにゃぁ・・・ (´・ω【みかん
  • 漢(オトコ)のコンピュータ道: InnoDBでCOUNT()を扱う際の注意事項あれこれ。

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

    漢(オトコ)のコンピュータ道: InnoDBでCOUNT()を扱う際の注意事項あれこれ。
    mumincacao
    mumincacao 2010/04/05
    とりあえず全からむにいんでっくす貼るなんて不思議な構造創るひとにぜひ読んでもらいたいとこなのです(´ω`;【みかん
  • これだけは覚えておきたい!!MySQL の6つの自動変換 - sakaikの日々雑感~(T)編

    MySQLはとても気ぃつかい屋さんである。我々が投げる多少あいまいな指示も頑張って解釈し、なんとか文句を言わずに実行してみようと挑戦してみてくれる。 今日はそんなMySQLがケナゲに解釈してくれる自動変換について紹介しようと思う。この自動変換、ケナゲなMySQLの奥ゆかしさ故、出した指示と異なる動作をされたことに気がつかないことがある。ここで紹介する6つの自動変換をしっかり脳ミソにたたき込んでおけば、無用なトラブルにハマる時間も減るかもしれない。 1.[数値] 範囲外の数値は頭を押さえつけられる intやsmallint、bigintなどの数値型には、扱える範囲が決まっている。例えばint型なら最大21億ちょっとだ(unsignedの場合は43億弱)。これより大きい数字を登録するよう指示を出すとMySQLはどうするか。そう、頑張って入れられるところまで入れてくれるのである。「入れられるとこ

    これだけは覚えておきたい!!MySQL の6つの自動変換 - sakaikの日々雑感~(T)編
    mumincacao
    mumincacao 2010/02/26
    ぷろぐらむ側でゆるゆるだと strict mode にすると動かなくなることがけっこうあるからにゃぁ・・・ (´・ω・`;【みかん
  • MySQL Clusterが苦手とするJOINを如何にして克服するべきか。

    シェアードナッシング型の負荷分散機能を持ち、なおかつ同期レプリケーションによるHA機能まで備えたMySQL Cluster最大の弱点といえば、JOINの遅さであろう。MySQL ClusterのJOINは偽りなく遅い。JOINを多用するアプリケーションでMySQL Clusterを利用するのはある意味マゾヒスティックな行為であると言えよう。何故MySQL ClusterはJOINが遅いのか?それはMySQL Clusterが分散データベースだからである。 ご存じの通り、MySQLにおけるJOINのアルゴリズムにはNested Loopしかない。他のストレージエンジンを利用していればそれでも十分実用に耐えうるぐらい高速なのだが、MySQL Clusterの場合はそうはいかない。JOINでは自ずとストレージエンジンからデータをフェッチする回数が増えるが、MySQL Clusterの場合レコード

    MySQL Clusterが苦手とするJOINを如何にして克服するべきか。
    mumincacao
    mumincacao 2009/11/04
    にゃんていうか・・・で~たふぇっちにねっとわ~く経由するから仕方ないとあきらめたらそこでげ~むせっとなかんじなのです...〆(・x・;【みかん
  • MySQLでインデックスを使って高速化するならCovering Indexが使えそう - (゚∀゚)o彡 sasata299's blog

    2009年10月28日09:33 MySQL MySQLでインデックスを使って高速化するならCovering Indexが使えそう Linux-DB システム構築/運用入門 (DB Magazine SELECTION) 著者:松信 嘉範 販売元:翔泳社 発売日:2009-09-17 おすすめ度: クチコミを見る 最近、このを読んでいます。非常に面白いし、参考になります〜。中でもインデックスについての記事が特に興味深かったので簡単にまとめてみます。 前提 ・インデックスは検索性能には効果があるが、更新性能は落ちてしまう ・MyISAM と InnoDB ではインデックスの構造が違う ・インデックスは B+Tree インデックスと呼ばれ、ルート、ブランチ、リーフの階層構造になっている ・インデックスはソートされた状態で作成されている まずは MyISAM と InnoDB でのインデックス

    mumincacao
    mumincacao 2009/10/29
    あくてぃぶれこ~どみたいなのにしちゃうと使えなくても直 SQL 描くときには使えるかもだからめもめも...〆(・x・。【みかん
  • レプリケーションしてるMySQLで、マスタやスレーブが障害停止した場合のリカバリプラン - (ひ)メモ

    MySQLで、レプリケーションベースのHAな構成について考えたメモです。 3台(というか2台+1台)がいいかなぁと思っていて、前半はその理由を、後半では{マスタ,スレーブ}が{再起不能になった,ちょっとダウンしてすぐ復帰した}場合のリカバリプランについて書きます。 今のところはこれがベストかなと思っているのですが、「こうしたほうがいいと思う!」「ここがおかしい!」などなどのご意見はコメント、TBなどでいただけるとうれしいです。 ゴール マスタが落ちてもぐーすか寝ていられるようにしたい リカバリの作業はできるだけ単純に、かつ、短時間で完了するようにしたい めんどくさいのはいや 基構成、方針 2台+1台 サービスで使うのは2台 (db1, db2) もう1台は管理用 (db3) スレーブを多数並べる構成にはしない 台数増えると管理コストが上がる マスタダウン時のフェイルオーバとそのフェイルバ

    レプリケーションしてるMySQLで、マスタやスレーブが障害停止した場合のリカバリプラン - (ひ)メモ
    mumincacao
    mumincacao 2009/10/26
    やっぱりこのくらすになると専門のひとがいないときびしい気がするにゃぁ...〆(´ω`;【みかん
  • MySQL Clusterカーネルの中身を覗いてみよう。

    MySQL Clusterのデータノードであるndbd(もしくはndbmtd)プロセスは、内部的にはマルチプルステートマシン(ブロック)がシグナル(もしくはメッセージ)を交換するという構造になっており、高い同時実行性を実現しているということについては前回述べた通りである。今日は、ndbd内部にどのようなカーネルブロックが存在するかということについて大まかに説明しよう。前回の話を踏まえて読んで頂ければ、何となくイメージだけでも掴めるのではないかと思う。まずは次の絵を見て頂きたい。これは俺の脳内から引っ張り出したndbdの構造のイメージ図である。 矢印はブロック同士の相関関係(シグナルの送受信など)を示すのだが、この絵に描かれているものは非常に省略されたものであり、実際にはもっと複雑に絡み合っているのだということを覚えておいて欲しい。例えばQMGRやDBDICTといったブロックは、他のブロック

    MySQL Clusterカーネルの中身を覗いてみよう。
    mumincacao
    mumincacao 2009/10/23
    MySQL Cluster の中のひとはすぱげってぃもんすた~・・・にう? 〆(・x・;【みかん
  • MySQL、適切なテーブル種類ですぐれたパフォーマンス | エンタープライズ | マイコミジャーナル

    SitePoint: New Articles, Fresh Thinking for Web Developers and Designers Kevin Yank氏がSitePointにおいて、Free Performance with MySQL Table Typesのタイトルのもと、実際にSitePointのイベントに関連して発生したMySQLのパフォーマンス問題をどのように考えて解決していったかを紹介している。データベースパフォーマンスの改善事例として興味深い。 SitePointはMiles Burke氏がまとめた書籍「The Principles of Successful Freelancing」の無償PDFを、Twitterのフォロアになれば手に入れられるというキャンペーンを実施した。Twitterの利用制限を避けつつ使いやすい仕組みを提供するために、最終的に、今のスタ

    mumincacao
    mumincacao 2009/09/16
    せっしょん管理は KVS のがいい気がするけど・・・ MySQL の MEMORY て~ぶるって固定長しか使えなかったような気が・・・固定長だけでせっしょん情報管理できるのかなぁ?
  • 仙石浩明の日記: 文字化けしていなくても MySQL 内の文字コードが正しくない場合がある

    MySQL 5 からテーブルごとに文字列のエンコーディングを指定できるようになった (「そんなことは知ってるYO!」という人も多いと思うので、 そういう人は「これからが題」 の部分まで読み飛ばして欲しい)。 例えばテーブルを作るときに、 mysql> CREATE DATABASE test; Query OK, 1 row affected (0.05 sec) mysql> USE test Database changed mysql> CREATE TABLE user ( name VARCHAR(255) ) CHARSET=utf8; Query OK, 0 rows affected (0.05 sec) などと 「CHARSET=utf8」 を指定すれば、 文字列を UTF-8 エンコーディングで格納する。 「CHARSET」 すなわち 「文字集合」 と、 エンコーディ

    mumincacao
    mumincacao 2009/09/15
    それぞれの charset を合わせればだいじょ~ぶなはずなのに latin1 を無理やり補正する力技こんぼはよく見かけるにゃぁ… 無茶するぐらいなら秘密のおまじないのほうがましかなぁ?【CHARSET=BINARY】ヾ(´・ω・`;【みかん
  • 【CakePHP】お手軽便利なCakeSchema | ECWorks Blog

    DBのテーブル設定は非常に面倒な作業の一つです。 特に、開発時は仕様変更などでテーブル内のフィールドが頻繁に増減することもあるかもしれません。 テーブルを作成したり、更新したりするのに、皆さんはどのような手順を踏まれるでしょうか?まずSQLを書いて、アップロードして、mysqlやpsqlのコンソールを使って実行していますでしょうか?それとも、mysqladminとかのguiツールを使っていますでしょうか? CakePHPには、schemaシェルが付属されていて、これを用いることで簡単にテーブルを初期化することができます。コマンドラインからコマンド一発で(実際には確認メッセージがあるのでy/n選択がありますが)、書き換わるので大変に便利です。 ただ、ドキュメントや情報が公開されているブログなどが少ないため、どのように記述して良いか分からない方も多いかと思います。そこで、簡単に使い方を解説し、

    mumincacao
    mumincacao 2009/08/31
    CakePHP のもでるを参考にするかもっておはなしはあるけど・・・これなら CREATE TABLE を直描くか phpMyAdmin でぺちぺち創るほうができるひと多そうだから安心かなぁ?(´・ω・`;【みかん
  • 1日かかったクエリを1秒で――改善の理由はコンサルにあり

    データベースの処理は、しばしばシステム全体の性能を大きく左右する。システムのパフォーマンスが悪ければハードウェアリソースの不足を招き、余計な投資が必要になる。逆に適切なチューニングを施せば、ITコストを抑えられるはずだ。MySQLのエキスパートである、サン・マイクロシステムズのエンジニアに、そのポイントを聞いた。 ビジネス環境が激変する昨今、ITへの効率的な投資を模索する動きが続いている。そんな状況の中、オープンソースに注目する企業も少なくないのではないだろうか。だが、ただ価格が安いからという理由だけで導入してもメリットを得られない。的確なメンテナンスを行わなければ、ハードウェアリソースの不足によりさらに投資が必要になることもある。 1日以上かかっていたクエリ処理を1秒に短縮 システムの性能を大きく改善する可能性があるのが、データベースのパフォーマンスチューニングだ。パフォーマンスチューニ

    1日かかったクエリを1秒で――改善の理由はコンサルにあり
    mumincacao
    mumincacao 2009/08/25
    主き~しかいんでっくすないのを集計とかそんなかなぁ? いんでっくすのない SQL が処理時間のほとんどなのに遅すぎるからる~ぷを使わず直描きしてなんてのあったけど意味がわからなかったにう(´・ω・`;【みかん
  • 【ハウツー】MySQLを手っ取り早く使うならコレ! テスト環境に最適な「MySQL Sandbox」 (1) わずかな操作でMySQLのSandboxを | エンタープライズ | マイコミジャーナル

    MySQLを手軽に使いたいユーザにはぴったりの"砂場" - MySQL Sandbox MySQLのインストールがもっと簡単なら…… ちょっと使いたいだけなのに…… こう考えたデベロッパは少なくないことだろう。とくにレプリケーションや1台のマシンに複数のMySQLサーバを構築したいとなった場合、ポート番号の衝突やデータディレクトリの管理など検討事項が一気に増え、作業が煩雑になりがちだ。そんなときは、このMySQL Sandboxを使えばスッキリ解決するかも知れない。わずかな操作で簡単にMySQLをインストールできる魅力的なプロダクトを紹介しよう。 7月14日、Giuseppe Maxia氏はMySQL Sandboxの最新バージョンであるMySQL Sandbox 3.0.04をリリースした。MySQL Sandboxは手軽にMySQLデータベースを構築できるオープンソースソフトウェア。同

    mumincacao
    mumincacao 2009/08/05
    そろそろれぷりも試してみたいからなんだか便利そうかも? ってほんとにいんすと~る方法がわからないひとが *nix 環境でこまんど入力していんすと~るは難しくないかにう?(´ω`;【みかん
  • Kazuho@Cybozu Labs: MySQL のボトルネックを統計的に監視・解析する方法

    MySQL のチューニング、と言った場合には、サーバーパラメータの調整や EXPLAIN コマンドを利用したクエリ実行計画の最適化が話題に上ることが多いです。しかし、発行する全ての SQL について、いちいち EXPLAIN コマンドを使って確認していては、いくら時間があってもたりません。チューニングを効率的に進めるには、まず、ボトルネックとなっている SQL クエリを特定し、次にその最適化を行うべきです。 ではどのようにして、ボトルネックを特定するのか。MySQL Conference & Expo 2009 のキーノートにおいて Mark Callaghan 氏は、Google では SHOW PROCESSLIST コマンドを使った統計的アプローチを使っていると述べていらっしゃいます (参照: MySQLConf 09: Mark Callaghan, "This is Not a

    mumincacao
    mumincacao 2009/07/23
    mysqldumpslow でのやりかたも見たけどさ~ばの構成変えずにできるのはうれしいにゃぁ...〆(・x・。【みかん 確実に重たいってわかってるくえりを最適化するには EXPLAIN も効果的なんだけど・・・
  • PHP逆引きレシピは概ね良いが、SQLインジェクションに関しては残念なことに - ockeghem's blog

    404方面でも絶賛されていたPHP逆引きレシピを購入した。書はとても丁寧な仕事で素晴らしいと思ったが、セキュリティに関しては若干残念な思いをしたので、それを書こうと思う。 目次は以下のようになっている。 第1章 準備 第2章 PHPの基構文 第3章 PHPの基テクニック 第4章 ファイルとディレクトリ 第5章 PEARとSmarty 第6章 Webプログラミング 第7章 クラスとオブジェクト 第8章 セキュリティ 8.1 セキュリティ対策の基 8.2 PHPの設定 8.3 セキュリティ対策 第9章 トラブルシューティング 第10章 アプリケーション編 PHP逆引きレシピ オフィシャルサポート 書は、タイトルの示すように、コレコレしたいという目的ごとにPHPでの書き方が書かれている。よくある逆引き辞典タイプのだが、類書に比べて丁寧に書かれている印象を受けた。私が感心したのは、PH

    PHP逆引きレシピは概ね良いが、SQLインジェクションに関しては残念なことに - ockeghem's blog
    mumincacao
    mumincacao 2009/07/13
    『こまけぇ…くぉ~としとけ』だとほんとに NULL を入れたいときとかに困るにう…でもえすけ~ぷ方法が全体で統一されてないのはもっと困るにう(´・ω・`;【みかん やっぱり型を意識してもらわないとかなぁ?
  • phpMyAdminのエクスプロイトが出現、パッチ適用の確認を

    SANS Internet Storm Centerは6月24日、データベースのMySQLをWebブラウザで管理するツール「phpMyAdmin」の脆弱性を突いたエクスプロイトが公開されていると伝えた。 それによると、少なくとも2件のエクスプロイトが公開フォーラムに投稿された。悪用されているのは、開発元が3月から4月にかけて更新版をリリースして対処した脆弱性。この問題を突かれると、攻撃者が任意のPHPコードを実行できてしまう恐れがある。 SANSは数日前、phpMyAdminを実行しているサーバのスキャンが活発になっているとの報告が読者から寄せられ、調べたところ、既知の脆弱性を突いた攻撃を受けていることが分かったと伝えていた。 SANSでは、phpMyAdminのパッチが適用されていることを確認するとともに、今後の悪用を防ぐためにも公開インターネットへのアクセスを制限するよう呼びかけている

    phpMyAdminのエクスプロイトが出現、パッチ適用の確認を
    mumincacao
    mumincacao 2009/06/26
    ろぐ見てると phpMyAdmin 狙いのぼっとさんっぽいのなんてずっと前から見かけてる気もするけど・・・おにうのはどこか新機能でも搭載してるのかなぁ?(・x・。【みかん
  • MySQL とメモリに関するまとめ - LukeSilvia’s diary

    前回のエントリーデータベースを用いたセッションデータ管理についてで、MySQL とメモリの関係について良く分からない部分があると書きました。 実はここに関する理解はかなり曖昧な部分があって、調査して追記します。とくにメモリ利用量について。mysqld のプロセスが利用できるメモリの上限が、32bit OS の場合は3G 程度ということは、innodb_buffer_pool_size もこの制限を受け、これについての警告が、先に紹介したリファレンスマニュアルのものという理解だけどいいのだろうかというのが1つ。 2 つ目は、この理解があっているとすると、4G 以上のクラスのメモリをつんだサーバをDB サーバとして利用する場合、64 bit OS でないとリソースの有効活用ができないか。それとも、先に書いたとおり、OS レベルのキャッシュとして利用できるから、結果としてデータファイルを読み込む

    MySQL とメモリに関するまとめ - LukeSilvia’s diary
    mumincacao
    mumincacao 2009/06/15
    32bit でもがんばれるけどやっぱり 64bit で 32bit の壁を越えたほうがお手軽かつ効率いい・・・にう? 〆(´ω`;【みかん
  • MySQL Connector/Jにおける大量INSERTのチューニング - SH2の日記

    ピンポイントチューニング講座です。まずは結果から。 このグラフは、以下のテーブルに50,000レコードINSERTしたときの処理時間を示したものです。性能に70倍以上もの差が出ているのはなぜか、見ていきたいと思います。 CREATE TABLE `loadtest` ( `id` int(11) NOT NULL, `data` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 方法1 ベースライン conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASS); pstmt = conn.prepareStatement("insert into loadtest (id, data) values (?

    MySQL Connector/Jにおける大量INSERTのチューニング - SH2の日記
    mumincacao
    mumincacao 2009/05/29
    MyISAM だと毎回いんでっくすの更新をしないように ALTER で DISABLE KEYS してから複数れこ~どまとめて処理して仕上げに ENABLE KEYS すると早くなるけどけっきょく LOAD DATA にはかなわなかったにゃぁ・・・ (´ω`;【みかん
Лучший частный хостинг