タグ

mysqlに関するgam-22のブックマーク (16)

  • 【php】addslashesとmysql_real_escape_stringって何が違うの at softelメモ

    問題 phpの関数のaddslashesとmysql_real_escape_stringって何が違うの? 答え SQLに渡すデータのエスケープに気を付けている方はaddslashes関数とmysql_real_escape_string関数の違いが気になったことがあると思います。 単純にエスケープしてくれる文字がMySQL用にちょっと違う(改行を\nにしてくれるなど)のと、接続しているクライアント側の文字コードを考慮して適切にエスケープしてくれる機能があります。 addslashes関数では何が問題なのかというと、日語のShift_JISや中国語のGBKなど文字の最後のバイトに16進アスキーコード 5c =\(バックスラッシュ) が含まれる可能性のある文字コードを使用すると、エスケープした時のバックスラッシュと前の1バイトがくっついて、別の文字になることがあるのが問題。 \x95' (

    【php】addslashesとmysql_real_escape_stringって何が違うの at softelメモ
    gam-22
    gam-22 2017/08/22
    PHPのaddslashesの脆弱性があるらしい
  • ISUCON6 で優勝しました : DSAS開発者の部屋

    @methane です。タイトルの通り、 ISUCON でとうとう優勝してきました。 チームメンバーは、(予選と同じく) @kizkoh (インフラ担当), @mecha_g3 (アプリ担当) でした。 私は予選のときはガッツリとアプリを書いていたのですが、戦では netstat -tn (←老害), top, dstat -ai, sudo perf top などをみつつ指示をだしたり、方針を決めたり、完全に未経験だった node.js & react.js 対策をしたりが主な仕事で、あとは序盤のインフラのタスクが大量にあるときに MySQLdocker から外して基的なチューニングを入れたり Go を100行程度書いただけです。 結果的には優勝できましたが、メンバーの2人がよく準備し番でも実力を発揮してくれたのに対して 僕の戦略ミスで中盤から全くスコアを上げられなかったので

    ISUCON6 で優勝しました : DSAS開発者の部屋
    gam-22
    gam-22 2016/10/25
    おめでとうございます!
  • MySQLインデックスのお手入れの基本 | Yakst

    Percona Database Performance Blogの翻訳。既に運用を始めたデータベースで、インデックスが正しく使われているか、無駄や不足がないかを確認する方法のまとめ記事。クエリをひとつひとつ確認するのではなく、統計情報を元に判断する分かりやすい方法。 このブログ記事では、MySQLインデックスに手入れする基的なステップについて見ていこうと思います。 データベースは、インデックス次第でハイパフォーマンスにも、役立たずで遅くて大変にもなりうることはご存知でしょう。インデックスは、時々手入れをする価値がある非常に重要なものです。それでは、何をチェックすればよいのでしょうか?順不同ですが、確認すべき点を挙げてみます。 1. 使われていないインデックス sysスキーマで、使われていないインデックスをとても簡単に見つけられます。 schema_unused_indexes ビューを

    MySQLインデックスのお手入れの基本 | Yakst
    gam-22
    gam-22 2016/10/03
    select * from sys.schema_unused_indexes; で使われていないインデックスを一発で見つけられるらしい
  • MySQLに重大な脆弱性見つかる、パッチ存在せずデフォルトで影響

    攻撃に利用された場合、root権限で任意のコードを実行され、サーバを制御される可能性が指摘されている。 米Oracle傘下のオープンソースデータベース「MySQL」に未解決の脆弱性が見つかったとして、セキュリティ研究者が9月12日に概略やコンセプト実証コードを公開した。サイバー攻撃に利用された場合、root権限で任意のコードを実行され、サーバを制御される可能性が指摘されている。 研究者のDawid Golunski氏が公開した情報によれば、MySQLの脆弱性は複数発見され、、中でも特に深刻な1件については、リモートの攻撃者がMySQLの設定ファイルに不正な内容を仕込むSQLインジェクション攻撃に利用される恐れがある。 この脆弱性は、MySQLの最新版を含む5.7系、5.6系、5.5系の全バージョンに、デフォルトの状態で存在する。現時点でOracle MySQLサーバの脆弱性修正パッチは存在

    MySQLに重大な脆弱性見つかる、パッチ存在せずデフォルトで影響
    gam-22
    gam-22 2016/09/13
  • 裏MySQL クエリー入門 (1) ELTとFIELD - イノベートな非日常

    ブログコンテストも終わってしまったので、MySQLの実践TIPSを書いていこうと思います。 一般的なSQLの他のサイトの解説に譲るとして、ちょっと横道にそれて、MySQL独自関数を使った実践TIPSを紹介していきたいと思います。 まず第一弾は『ELT/FIELD』、MySQLマニュアルを読むと ELT(N,str1,str2,str3,...) N = 1 の場合は str1 を戻し、N = 2 の場合は str2 を戻す、というふうに続きます。N が 1 以下か、引数の数より大きければ、NULL を戻します。ELT() は FIELD() の補数です。と書かれています。がこれだけだと良く分かりません。 具体的な実践例をあげると例えば、ユーザテーブル(user)で『sex』という性別を示すカラムがあったとします、1:男 2:女といった意味でtinyint型で値が格納されているとします。その

    裏MySQL クエリー入門 (1) ELTとFIELD - イノベートな非日常
    gam-22
    gam-22 2016/07/27
    ELT地味に便利
  • ヤフー社内でやってるMySQLチューニングセミナー大公開

    速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)NTT DATA Technology & Innovation

    ヤフー社内でやってるMySQLチューニングセミナー大公開
  • RubyでMySQLに繋ぐためのruby-mysqlとmysql2 - たごもりすメモ

    このエントリは MySQL Casual Advent Calendar 2011 - MySQL Casual の10日目の記事です。 こんばんは。tagomorisです。さとしです。タゴモリスの s はさとしの s です(実話)。Twitterで #さとし というハッシュタグが流れるたび、ひそかにびくっとしてます。 RubyからMySQLに繋ぐときにどうするの、ととりあえず gem search -r mysql とかやると思います。そして大量にあれこれ出てきてどうすればいいんだ! という気分になると思います。そういう気分になったことがあるので、現状を簡単にまとめてみました。 ruby-mysql 昔からの定番ですね。作者は id:tmtms のとみたまさひろさん。rubygemsとか使われる前から Ruby/MySQL というライブラリ名で知られていました。Googleで検索するとト

    RubyでMySQLに繋ぐためのruby-mysqlとmysql2 - たごもりすメモ
    gam-22
    gam-22 2016/02/02
    "とりあえず gem search -r mysql とかやると思います。そして大量にあれこれ出てきてどうすればいいんだ! という気分になる"
  • ISUCON 5 決勝戦で負けてきました : DSAS開発者の部屋

    lily white というチームで ISUCON 5 決勝戦に出場してきました。 終盤が、結果 fail でスコアなしに終わってしまいました。 チームメンバーは僕の他に、新人の @gam0022 と、学生の @koki_cheese さんです。 二人とも経験が殆ど無い状態だったので、 @gam0022 には主に MySQL を、 @koki_cheese さんには アプリ側で僕が予選でやったことを練習してもらい、少しでも僕が戦略的に動ける余裕を作るという作戦でした。 結果的に、DBMySQL でなかった、 @koki_cheese さんが練習時間をあまり取れなかった、 僕が2人を信頼しきれずアプリの実装に回ってしまい、戦略的な所ができなかったために、実力を発揮できずに終わってしまいました。 11:00 ~ 12:00 初回ベンチ実行 下回りは @gam0022 にまかせていたのです

    ISUCON 5 決勝戦で負けてきました : DSAS開発者の部屋
    gam-22
    gam-22 2015/11/03
    ISUCON5の本戦に出てました。トレブルシューティングで時間を無駄にしてしまって、下回り的なサポートも満足にできなかったのは反省。
  • MySQLのメモリ設定の勘所 – sawara.me

    MySQLサーバーをダウンさせた夜は数知れず。 その度にmy.cnfの設定を見なおしてみてはトライし、治ったと思いきや突然のダウン。 サーバーがダウンしてしまう原因は何かと聞かれれば、「メモリです」と断言しましょう。 メモリ設定は諸刃の剣。 パフォーマンスを最大に引き出すこともできればそれと引き換えにサーバーをダウンさせてしまうこともできるんです。 今回はMySQLのメモリの設定の勘所というかたちで紹介しようと思います。 グローバルバッファとスレッドバッファ メモリの設定についてまず「グローバルバッファ」と「スレッドバッファ」について理解しておくことが大事です。バッファとは一時的な記憶領域・つまりはメモリの領域のことなのですが。 グローバルバッファ MySQLで使用する全体的なメモリ使用量を計算するには グローバルバッファ + (スレッドバッファ × コネクション数) = メモリ使用量 と

    MySQLのメモリ設定の勘所 – sawara.me
  • MySQL InnoDBストレージエンジンのチューニング(前編)

    InnoDBのアーキテクチャおさらい クエリは、物理レイヤーの特性を意識して書かなければいけないものの、基的にはロジック(論理)を記述するレイヤーである。前回まで解説したオプティマイザは、論理と物理の中間に位置する(または両者をつなぐ)レイヤーであると言える。つまり、オプティマイザにとっての至上命題は、如何に効率良く下位のレイヤーを使うというものであると言える。一方、下位のレイヤーであるストレージエンジンはまさに実装(物理)の領域である。ユーザーが必要とするクエリに対していかに素早く応答するかが、物理レイヤーたるInnoDBのチューニングにおける最終目標となる。 物理レイヤーのチューニングをするには、そのアーキテクチャを知ることが何よりも重要だ。アーキテクチャこそが物理レイヤーそのものだと言っても過言ではないからだ。以下では、チューニングを行う上で必須となる、基的な構成部品について説明

    MySQL InnoDBストレージエンジンのチューニング(前編)
    gam-22
    gam-22 2015/10/25
    ようやく納得した“セカンダリインデックスは必然的に主キーの値を含んだマルチカラムインデックスとなる”
  • Kazuho@Cybozu Labs: フレンド・タイムライン処理の原理と実践

    « MySQL のクエリ最適化における、もうひとつの検証方法 | メイン | MySQL (InnoDB) に直接アクセスしてタイムライン処理を高速化する話 » 2008年06月09日 フレンド・タイムライン処理の原理と実践 MySQL (InnoDB) に直接アクセスしてタイムライン処理を高速化する話に続きます。 Twitter が注目されるようになって久しい今日この頃ですが、友人の投稿を時系列に並べて表示する、というのは、Twitter に限らず Mixi の「マイミクシィ最新日記」やはてなブックマークの「お気に入り」等、ソーシャルなウェブサービスにおいては一般的な手法です。ですが、この処理 (以下「フレンド・タイムライン」と呼ぶ) は、一見簡単そうに見えて、実装には様々な困難が伴います。記事では、「フレンド・タイムライン」を実現する、プッシュ型とプル型の二種類の手法について、その原

    gam-22
    gam-22 2015/10/25
  • InnoDB Pluginことはじめ。快適ストレージエンジン生活はじまる!

    MySQL 5.1.38からMySQL体にInnoDB Pluginバンドルされている。一部の先駆的なユーザー以外に、「InnoDB使ってますよ!」もしくは「検証してるよ!」という話をあまり聞かない。そもそもであるが、InnoDB Pluginってなんぞ?!という人が多いんではないかと思うのだが、実際はどうなのだろう?現在はRC版(リリース候補版)という位置づけのInnoDB Pluginであるが、一部影響度の高いバグが残っていたりしてGA版ほどの安定性は求められないものの、ほとんど実用に耐えうる品質になっているといえる。そんなわけで、今日は改めてInnoDB Pluginの使い方・使いどころについて説明するので、ぜひ皆さんの手でInnoDB Pluginを評価してみて頂きたい。 なお、以下の解説は現在の最新バージョンである、InnoDB Plugin 1.0.6を前提にしているので、将

    InnoDB Pluginことはじめ。快適ストレージエンジン生活はじまる!
    gam-22
    gam-22 2015/10/25
    “innodb_file_format=Barracuda”しないと圧縮テーブル使えないのか
  • プロファイリングで快適MySQLチューニング生活

    MySQL 5.1からデフォルトで有効になっている便利な機能としてプロファイリングというものがある。MySQL 5.0でも利用出来たのだが、実験的な機能という位置づけであり、搭載されていたのはGPL版のMySQL Community Server限定だった。MySQL 5.1からは全てのエディションでプロファイリングを利用することができる。 プロファイリング機能を利用すると、クエリの状態(特に状態遷移やリソースの消費状況)を詳細に分析できるのでとても便利だ。MySQLエンジニア必携の機能といって良いだろう。というわけでプロファイリング機能の使い方を説明しよう。 MySQLサーバにログインしたら、まずは次のようにしてプロファイリングを有効にする。 mysql> SET profiling=1; すると、クエリの情報が記録されるようになる。次に、分析したいクエリを実行する。クエリはなんでもいい

    プロファイリングで快適MySQLチューニング生活
  • MySQLの「InnoDB」と「MyISAM」についての易しめな違い - (2015年までの)odaillyjp blog

    今回はMySQLのストレージエンジンという重箱の隅をつつくようなネタをメモしておきます。 私はMySQLについてはよちよちレベルなので、込み入った内容には触れられません。初心者でも理解しやすい部分での違いを中心にまとめていこうと思います。 【復習】ストレージエンジンとは MySQLなどのデータベース管理システムが、データベースにデータを書き込んだり、読み込んだりするときに使われる基盤を「ストレージエンジン」と呼びます。初心者同士の会話の中で「MySQLを使ってデータを保存する」と表現することがありますが、実際にデータの保存処理を行っているのが、このストレージエンジンになります。MySQLの論理構造を図で載せます。 MySQLは「データベース管理システム」ですので、データベースを管理するために必要である様々な機能が搭載されています。その中の「データの読み書き」という部分を担当しているのがスト

    MySQLの「InnoDB」と「MyISAM」についての易しめな違い - (2015年までの)odaillyjp blog
  • InnoDB buffer pool dumpで遊ぶ

    掲題のMySQL5.6の新機能で遊んでみたメモ。 InnoDBバッファプールの内容をファイルに書き出しておくことが出来る機能が追加された。 書き出すタイミングは正常終了時(SET GLOBALまたはmy.cnfでinnodb_buffer_pool_dump_at_shutdown = 1を設定)または 任意のタイミングで即時書き出し(SET GLOBAL innodb_buffer_pool_dump_now = 1;) 読み出すタイミングは起動時(my.cnfにinnodb_buffer_pool_load_at_startup = 1)または 任意のタイミングで即時読み込み(SET GLOBAL innodb_buffer_pool_load_now = 1;) これで、mysqldを再起動してバッファプールが空っぽになっても 素早くウォームアップできるぞ、ということらしい。 特に何

    gam-22
    gam-22 2015/10/21
    MySQLのウォームアップ機能を実験してみよう
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

    gam-22
    gam-22 2015/10/05
    この辺を実践するだけでISUCON5の予選で1万点超えた。
  • 1