タグ

MySQLに関するyifeのブックマーク (40)

  • 非公式MySQL 8.0オプティマイザガイド by yakst

    View the Project on GitHub はじめに サーバーアーキテクチャー B+ツリー インデックス Explain オプティマイザ トレース 論理変換 コストベース最適化 ヒント プランの比較 複合インデックス カバリングインデックス Visual Explain 変わりゆく実行計画(Transient Plans) サブクエリー 共通テーブル式(CTE)とビュー 結合 集約 ソート パーティショニング クエリーリライト 不可視インデックス クエリープロファイリング JSONと生成列 文字セット 非公式MySQL 8.0オプティマイザガイド 日語版 原文URL: http://www.unofficialmysqlguide.com/ 翻訳者: doublemarket (@dblmkt) The Unofficial MySQL 8.0 Optimizer Guideの

  • MySQLのチューニングを戦う方へ

    連載もついに最終回となりました。 連載では、MySQLクエリーチューニングことはじめで予告した通り、「チューニング箇所の洗い出しのテクニック」について説明してきましたが、「チューニングの方法」については一切触れませんでした。 「連載ではチューニングそのものの方法については詳しく説明しません。それは見出しの通り「銀の弾丸」などはなく、MySQLのパフォーマンスチューニングは計測と改善を繰り返し行っていくべきものだからです。そのため、特定のケースにマッチする改善の手法よりも、繰り返し使われる計測の手法にフォーカスを当てて説明していきます。」 その理由としてこの一文が全てではありますが、今回は参考までに筆者が考えるチューニングの指標を紹介したいと思います。それがあなたの環境に当てはまるかどうかは、これまでに紹介してきたツールなどを利用して計測してみてください。 チューニングの基方針 基

    MySQLのチューニングを戦う方へ
  • バックアップと障害復旧から考えるOracle Database, MySQL, PostgreSQLの違い

    2. 2 自己紹介+所属会社紹介 • 渡部 亮太(わたべ りょうた) – JPOUG 共同創設者、ボードメンバー – Oracle ACE – 著書「プロとしてのOracleアーキテクチャ入門 [第2版]」 「プロとしてのOracle運用管理入門」 – ブログ「コーソルDatabaseエンジニアBlog」 http://cosol.jp/techdb/ • 株式会社コーソル – 「CO-Solutions=共に解決する」の理念のもと、Oracle技術に特 化した事業を展開中。心あるサービスの提供とデータベースエン ジニアの育成に注力している – 社員数: 131名 (2016年7月時点) – ORACLE MASTER Platinum 11g 取得者数 45名 ORACLE MASTER Platinum 12c 取得者数 28名 (現時点でおそらく)取得者数 日 No.1

    バックアップと障害復旧から考えるOracle Database, MySQL, PostgreSQLの違い
  • 『オンラインで安全にスキーマ変更可能なpt-online-schema-change』

    Amebaのソーシャルゲーム全般のインフラを担当しつつ賃貸マンションの間取りを眺めたり、 戸境壁の工法による防音性の違いについて日夜研究しています。 いつかD値が60以上のマンションに住みたいです。

    『オンラインで安全にスキーマ変更可能なpt-online-schema-change』
  • MySQLレプリケーションを安全に利用するための10のテクニック

    MySQLのレプリケーションは非常に簡単に使える割には応用の幅が広いので非常に人気のある機能の一つである。レプリケーションの応用分野は例えば、 バックアップ 参照系の負荷分散 HA(高可用性) ディザスタリカバリ(サイト間レプリケーション) BI(レポーティングetc) という風にとても多くのバリエーションがある。このブログを読んで頂いている皆さんの中にもレプリケーションを使っている方は多いのではないだろうか。ご覧の通りMySQLのレプリケーション機能はミッションクリティカル分野でも利用されているが、レプリケーションの使い方が適切でないとシステムの安定稼働に支障を来してしまってDBAやシステム管理者の肉体的、精神的負担が増大してしまう。逆にレプリケーションを堅牢に運用することが出来ればマクラを高くして眠れるというものだ。レプリケーションはMySQLの代表的な機能であるので、レプリケーション

    MySQLレプリケーションを安全に利用するための10のテクニック
  • Linux performance tuning tips for MySQL

    All of Percona’s open-source software products, in one place, to download as much or as little as you need.

    Linux performance tuning tips for MySQL
  • sqlmap: automatic SQL injection and database takeover tool

    Introduction sqlmap is an open source penetration testing tool that automates the process of detecting and exploiting SQL injection flaws and taking over of database servers. It comes with a powerful detection engine, many niche features for the ultimate penetration tester and a broad range of switches lasting from database fingerprinting, over data fetching from the database, to accessing the und

  • ipython notebook で DBのデータを可視化する(簡単)

    2013/08/24 13:09 ※ 商品のリンクをクリックして何かを購入すると私に少額の報酬が入ることがあります【広告表示】 Data Scientist になろう で紹介した通り、 Python の科学技術系ライブラリを使うのが非常に簡単になっています。 なんせ、GUIインストーラでほとんど必要なライブラリが入ってしまうのですから。 Python を使う強みは csv や tsv といったデータの準備段階からすべて Python でできる(シチュエーションが多い)ところにあるようなので、今回は MySQL からデータを取り出してそのままプロットしてみました。 IPython Notebookは、ブラウザに打ち込んだコードを次々に評価でき、リアルタイムにプロットした画像が表示されるので非常に面白いです(通常のインタラクティブシェルでやるとプロットしたウィンドウが別に開き、ウィンドウを閉じ

  • MySQL 5.7.4で導入されたdefault_password_lifetimeがじわじわくる(MySQL 5.7.11でFIX!!)

    MySQL 5.7.4で導入されたdefault_password_lifetimeがじわじわくる(MySQL 5.7.11でFIX!!) 【2016/01/13 10:12】 MySQL 5.7.11でdefault_password_lifetimeのデフォルトは0に変更になりました! それ以降のバージョンであればこの記事の内容は気にする必要はありません。 日々の覚書: MySQL 5.7.11でdefault_password_lifetimeのデフォルトが0になるらしい! TL;DR default_password_lifetime= 0 を秘伝のmy.cnfに入れておくつもり。 MySQL :: MySQL 5.7 Reference Manual :: 5.1.4 Server System Variables パラメーターの意味は読んで字のごとく、「最後にパスワードが更新さ

  • SQL Injection Cheat Sheet

    MySQLPHPについて To clarify some issues; PHPMySQLの組み合わせでは、複文はサポートされていない。Javaは複文をサポートしていない(ORACLEについては確実だが、他のデータベースに関しては確定ではない)。通常、MySQLは複文をサポートしている。しかし通常は、データベースレイヤー側の設定のため、PHPMySQLアプリケーションでは2番目のクエリを実行することができない。MySQLクライアントは複文をサポートしていると思われるが、確信はない。誰か解明してほしい。 複文によるSQLインジェクション攻撃のサンプル ID: 10;DROP members -- SELECT * FROM products WHERE id = 10; DROP members-- これは、通常のクエリを実行した後でDROP membersというSQL文が実行される。

  • ムック「データベース徹底攻略」 - MySQL/Redis/MongoDB/Redshift

    最近発売された技術評論社のムック「データベース徹底攻略」に寄稿しました。 このは、データベースのためのということで、データベース設計、SQLMySQL、Redis、MongoDB、Redshiftという代表的な要素技術についてのまとめとなっています。各プロダクト(MySQL、Redis、MongoDB、Redshift)については、現場で実際に格的に使われている方々による記事なので大いに参考になると思います。 私は冒頭のまとめ記事を寄稿しました。詳細はぜひお手に取って読んでくださればと思います。ここでも自分が各技術を現時点でどのようにとらえているか、ではいささか書きづらい内容について、最近流行りの言葉でもある「技術的負債」という観点も踏まえて書いておこうと思います。 ・MySQL (RDBMS) 私はMySQLの中の人でもありましたし、これまで至るところで話してきたので省略します

  • オトコのソートテクニック2008

    今日は仕事納めだったので、一年の締めくくりとしてMySQLにおけるソートの話でもしようと思う。 インデックスを利用しないクエリで最もよく見かけるもののひとつは、ORDER BYを用いたソート処理だろう。もし、ソート処理においてインデックスを用いることが出来れば、MySQLは結果を抽出してから結果行をソートするのではなく、インデックス順に行を取り出せば良いので高速にソート処理することが可能になる。特に、LIMIT句やWHERE句を用いて行の絞り込みを行う場合は効果が絶大である。しかし、ひとたびインデックスを利用できない状況に直面すると、たちまちテーブルスキャンが発生して性能が劣化してしまう。 例えば、100万行のレコードを格納したt1というテーブルがあるとする。そのテーブルに対して以下のようなクエリを実行した場合を考えよう。 mysql> SELECT col1, col2 ... colx

    オトコのソートテクニック2008
  • 駄文:MySQLエコシステムと車の関係 - rkajiyama’s diary

    MySQLサーバを市販されている乗用車だとすると、MySQL Clusterは整備されたサーキットでの高速走行に最適化されたフォーミュラカーな感じで、WebScaleSQLは市販車をベースにして、特殊な走行環境に最適化されたラリーカーなイメージか? photo by djkennyc; CC-SA 3.0, from deviantart.com フォーミュラカーの限界性能を引き出すためには特殊な運転テクニックのみならず、専門スタッフによるメンテナンスが必須。エンジンや仕様は市販車とは大幅に異なり、一人しか乗れなかったり荷物を搭載できない上、一般道での走行が実質的に不可など制限事項が多いが、圧倒的に高速。フォーミュラカーでの蓄積された技術が市販車に反映されたり、逆に市販車でのニーズをもとにフォーミュラカーの仕様が決められることも。 photo by kallerna; CC-SA 3.0,

    駄文:MySQLエコシステムと車の関係 - rkajiyama’s diary
  • Evernote Blog � Blog Archive � New updates to Web and Windows

    에버노트에 뭐가 새로워요?에버노트에서 무슨 일이 일어나고 있는지 궁금하신가요? 아래의 기사들을 확인하여 우리가 작업 중인 흥미로운 것들을 모두 볼 수 있습니다. 새로운 소식레거시 버전 Evernote 앱 사용 중지2024년 3월 26일, 저희는 레거시 버전 Evernote 앱에 작별을 고합니다. v10 이전의 Evernote 경험을 단일화하면 보안 수준을 크게 높이고 더 빠른 개발을 위해 더 많은 자원을 투입할 수 있습니다. 더 읽기 14가지 주요 기능이 이제 모든 사용자에게 제공됩니다이 중요한 Evernote 기능들은 검색, 첨부 관리, 노트 액세스 등 핵심적인 제품 성능을 높여줍니다. 이제 누구나 그 기능을 사용해 Evernote의 잠재성을 최대한 활용할 수 있습니다.

    Evernote Blog � Blog Archive � New updates to Web and Windows
  • MySQLの大きなテーブルでのパフォーマンスを改善する10の方法 | Yakst

    MySQLコミュニティマネージャのMorgan Tocker氏による、テーブルサイズが大きくなるにつれてINSERTのパフォーマンスが落ちてきてしまうことを防ぐ様々な方法についてのまとめ。 今日は、パフォーマンス問題を引き起こす原因になる、サイズの大きいテーブルのパフォーマンスを改善することについて書いてみようと思う。このアドバイスのうちのいくつかは、たくさんのテーブルをまとめて大きくなっているデータベースにも適用できるが、大抵の場合、独立した大きなテーブルというのは特に問題になりやすいものだ。 一般的に知られていると思われるのは、テーブルを変更する時のスピードは、そのサイズが大きくなるにつれて遅くなることだ。以下の図は、一般的なB+ツリーインデックスのパフォーマンスを時系列で見たものだ。 このグラフは、MySQL@Facebookの記事から拝借したものだ。これは、insert buffe

    MySQLの大きなテーブルでのパフォーマンスを改善する10の方法 | Yakst
  • MySQL :: MySQL 8.0 リファレンスマニュアル :: 12.9 MySQL で使用されるカレンダー

    10 月 4 日から 10 月 15 日の間には日付がありません。 この不連続性はカットオーバーと呼ばれます。 カットオーバー前の日付はユリウス暦で、カットオーバー後の日付はグレゴリオ暦です。 カットオーバー中の日付は存在しません。 実際に使用されていなかった日付に適用されるカレンダーは、先発と呼ばれます。 したがって、カットオーバーが発生せず、常にグレゴリオ暦のルールで制御されていると考えられる場合は、先発グレゴリオ暦が使用されています。 これが MySQL で使用されるものであり、標準 SQL でも必須です。 そのため、MySQL DATE または DATETIME 値として格納されたカットオーバー前の日付は、その違いが補正されるように調整する必要があります。 すべての国で同時にカットオーバーが発生しなかったこと、および発生が遅くなるほど失われる日数も多かったことに気付くことが重要です

    yife
    yife 2013/10/22
    1582年以前の日付を取り扱うときの注意
  • Devsの常識、DBAは非常識

    1. MySQL Admin が見た Devs の常識、 DBA は非常識 2013/09/14 yoku0825@MyNA PHP Conference 2013 2. \こんにちは!/ ● yoku0825 ● とある企業の DBA ● MySQL 歴 5 年くらい ● オラクれない ● ポスグれない ● 嫁の夫 ● せがれの父 ● 日 MySQL ユーザ会 (MyNA) のスベり担当 3. \しゃべること!/ ● 日常的に MySQL のソースコードに触れる変態 DBA がフツーの Devs に投げた愛のマサカリ集 ( のつもり ) ● ウチの開発言語は PHP > Java >> Ruby らしいです ● ウチでは DBA がサーバーの構築、 Devs が設計・ テーブル構築・運営、 DBA はトラブルシュートや改 善提案 ( 運用 ) 、というサイクルで回しています。

    Devsの常識、DBAは非常識
  • SQLインジェクションゴルフ - なんと3文字で認証回避が可能に

    昨日のエントリ「SQLインジェクションゴルフ - 認証回避の攻撃文字列はどこまで短くできるか?」にて、認証回避の攻撃文字列が5文字にできる(「'OR'1」)ことを示しましたが、@masa141421356さんと、やまざきさん(お二人とも拙著のレビュアーです)から、idとpwdにまたがった攻撃例を示していただきました。やまざきさんの例は、MySQL限定ながら、なんと3文字です。これはすごい。 @masa141421356さんの攻撃例 @masa141421356さんのツイートを引用します。 @ockeghem 大抵のDBでid=''OR' AND pwd='>' ' が通ると思います(id側に「'OR」, pwd側に「>' 」で6文字)。長さ0の文字列がNULL扱いされないDBなら最後のスペースを消して5文字です。 — masa141421356 (@masa141421356) June

  • MySQL :: MySQL 8.0 リファレンスマニュアル :: 12.4.2 比較関数と演算子

    比較演算の結果は、1 (TRUE)、0 (FALSE)、または NULL の値になります。 これらの演算は、数字と文字列の両方で機能します。 必要に応じて、文字列は数字に、数字は文字列に自動的に変換されます。 次の関係比較演算子を使用すれば、スカラーオペランドだけでなく行オペランドも比較できます。 = > < >= <= <> != これらの演算子の詳細は、このセクションの後半で説明します。 行サブクエリーのコンテキストにおける行比較のその他の例は、セクション13.2.11.5「行サブクエリー」 を参照してください。 このセクションで示す関数の一部では、1 (TRUE)、0 (FALSE)、または NULL 以外の値が返されます。 LEAST() および GREATEST() はこのような関数の例です。セクション12.3「式評価での型変換」 では、これらの関数と同様の関数によって実行される

  • MySQLを選んだときの注意点覚え書き - Walking Days

    MySQLは個人的に馴染み深いDBであり、また広く使われているDBなのだが、結構引っ掛かる点があったりする。雑感程度にまとめておきたい。 2012/09/24追記 MySQL 5.6での日付型マイクロ秒対応 JDBCドライバのPreparedStatementがデフォルトでは静的プレースホルダではない IPA「安全なSQLの呼び出し方」の「5.5 Java+MySQL」によると、 デフォルトでは動的プレースホルダが選択されるので、静的プレースホルダを使用するには、DB 接続時に useServerPrepStmts=true というパラメータを指定する必要があります。 とあり、初期状態では動的プレースホルダを使ってSQLを組み立ててからMySQLサーバーに送信している。つまり、JDBCドライバの実装に問題があれば、SQLインジェクションが発生し得るということであり、実際に過去において脆弱性

    MySQLを選んだときの注意点覚え書き - Walking Days