タグ

MySQLに関するmatsuboboのブックマーク (14)

  • 負荷の高いMySQLでメタデータを極力ロックさせずにDROP TABLEする - Qiita

    概要 MySQLではDROP TABLEするときにメタデータをロック(MySQL5.5以前の場合)します。 数千万件を超えるようなテーブルをDROP TABLEすると平気で数十秒かかったりするため、その間は高負荷状態になったり、メタデータがロックされているために解除までDDLを流せなかったり、などなど不都合がありします。 大量のレコードを持つテーブルのDROP TABLEに時間を要するのは同期的にデータファイルを削除しようとするためです。 DROP TABLEすると内部的にデータファイルをunlinkしますが、リンク数が0になると(実際はそれだけじゃないけれど)ファイルシステム上の実データ削除処理が走り、巨大なファイルであればあるほどその処理に時間を要することになります。 そこでunlinkされてもリンク数が1以上あれば実データの削除処理は走らないのでは?ということになります。 すなわち、

    負荷の高いMySQLでメタデータを極力ロックさせずにDROP TABLEする - Qiita
  • Vagrant + Docker provisioning

    概要 Vagrantには、provisioningという仕組みがあり、Vagrant(VirtualBox)のVMライフサイクルとVMホスト上で動くVMやコンテナのライフサイクルを簡単に管理できる仕組みがある Provisioningを使わないでDockerを管理するとなると、VMのライフサイクル毎に、コンテナのビルドやスタート、クリーンナップを自分で書かなければいけない Provisioningを使うことで、必要最低限のコードを書くだけで済む。 コードはこちらに置いてあります。 https://github.com/matsubo/vagrant-docker-provisioning/ デモ こんな感じで、2回目以降の起動は30秒でコンテナが起動します。 おまけ ほぼ同等のインフラ構成を行う、boot2docker + Docker composeも作ってみました。 -boo2dock

    Vagrant + Docker provisioning
  • MySQL 5.6 minor query optimizer tips

    ... date_add(NOW(), interval -60 day) < column 当たり前と言えば当たり前ですが、上記の検索はfull scanになっちゃうんですね。 左辺が変数に展開されるのかと思いきや、展開されないです。なので、一度変数に入れてから実行するなり、プログラム側で計算してから発行しないとだめです。 set @date_restriction = date_add(NOW(), interval -60 day); ... @date_restriction < column おそらく、binlogとかの関係でこうなっちゃっているのかなーと思う。 これを踏まえて、SQLをできるだけ静的に書かないといけませんねぇ。。。 今までコードレビューでも見逃している疑惑が。。。。

  • MySQLがおかしい!あなたならどうしますか? – MySQL Casual Advent Calendar 2011 - As a Futurist...

    しわっす!DBA 兼オペレーションエンジニア兼タスクマネージャやってる riywo です。何のネタを書こうかなぁと考えたのですが、正直ネタを仕込む時間もなかったので僕がいつもやってることをさらっと紹介するということで勘弁して下さい>< MySQL がおかしい! 03:14 hidek: なんかエラー出まくってるんだけど! 03:14 zigorou: MySQL と通信してるとこっぽい 03:15 riywo: 見ます こんなやりとりは皆さん日常茶飯事ですよね?ね?ね?こんな時に、DB に責任を持つものとして真っ先に対応するのが僕らの仕事です。でも、じゃあ具体的にこのあと何をしましょう?既にサービスはエラーだらけで一刻を争う状態です。 (対応開始) まずはエラーメッセージ 今回の様な場合はアプリのエラーログにどばっと MySQL に関するエラーが出ているでしょう。まずはそれを見ることが始ま

    MySQLがおかしい!あなたならどうしますか? – MySQL Casual Advent Calendar 2011 - As a Futurist...
  • MySQL を PDO で使うときは ATTR_EMULATE_PREPARES を設定しよう : DSAS開発者の部屋

    「DSAS for Social を支える技術」 というネタでadvent calendar に挑戦します。 methane です。 PDOで MySQL を使うときは、みなさん $stmt = $con->prepare("..."); して $stmt->execute($values); とかしてプリペアドステートメントを利用されていると思います。 実は、このプリペアドステートメント、パフォーマンス的にはあまり良くありません。1つのクエリを実行するために、プレースホルダ付きのクエリを投げた後に、それに値をバインドして実行するコマンドを投げるので、1回のクエリを実行するのに2往復の通信が必要になるのです。 プリペアドステートメントにはパフォーマンスの利点(同じクエリを何度も発行するときにDBサーバーがクエリの解析を繰り返さないでもすむ)というものと、SQLインジェクション対策になる(正

    MySQL を PDO で使うときは ATTR_EMULATE_PREPARES を設定しよう : DSAS開発者の部屋
  • DBサーバーの負荷分散

    MySQLアクセスを負荷分散する ユーザーからのアクセス数が非常に多いWebサイトにおいて、MySQLのSLAVEサーバーを複数台並べて負荷分散させるということがよく行われています。ただ、Webアクセスの負荷分散は一般的なテーマなのでいろいろなところで語られているのに対し、DBアクセスの負荷分散というテーマは一般的でないのかあまり語られていないように感じます。 DBアクセスを負荷分散するにあたって一番荒っぽい方法は、Webサーバー上のプログラムの中でどのSLAVEサーバーに接続するかをランダムで決める方法です。ランダムと言っても長時間アクセスしているとほぼ接続先が均等化されるので、一見この方法でも問題ないように見えます。しかしこの方法だと、接続しに行こうとしたSLAVEサーバーが高負荷もしくはサービス停止中であっても構わず接続しに行ってしまうという問題があります。 このような問題を解決する

  • Managing Hierarchical Data in MySQL - Blog - Spect3

  • データベースで階層構造を扱う(ツリー構造)- 自家用辞典

    名前 : コメント (2023-05-04 22:41:02) 名前 : コメント (2023-05-04 22:41:01) 名前 : コメント (2023-05-04 22:41:01) 名前 : コメント (2023-05-04 22:41:00) 名前 : コメント (2023-05-04 22:40:59) 名前 : コメント (2023-05-04 22:40:58) 名前 : コメント (2023-05-04 22:40:57) 名前 : コメント (2023-05-04 22:40:56) 名前 : コメント (2023-05-04 22:40:56) 名前 : コメント (2023-05-04 22:40:55) 名前 : コメント (2023-05-04 22:40:54) 名前 : コメント (2023-05-04 22:40:53) 名前 : コメント (2023-

    データベースで階層構造を扱う(ツリー構造)- 自家用辞典
  • REPLACE INTO と INSERT ON DUPLICATE KEY UPDATE の違い - Enjoi Blog

    By clicking “Accept all cookies”, you agree Enjoitech can store cookies on your device and disclose information in accordance with our Cookie Policy. Accept all cookies

  • Jet Profiler for MySQL

    is a real-time query performance and diagnostics tool for the MySQL database server. Query, table and user performance Jet Profiler focuses on queries, tables and users. This gives you the information you need in order to quickly fix performance problems in your code, such as most frequent queries, most used tables or the busiest users. Graphical visualisation Data is collected, analyzed and displ

  • mysql full-text parser plugin collection

    Runn is a modern resource and capacity planning platform that gets remote teams on the same page. Runn is best suited for project managers, operations leads, resourcing managers and other people responsible for project delivery. Runn has a modern and easy-to-use interface that provides your team with a shared view of all the people and projects in your organization. Plan new work alongside existin

  • MySQL バイナリログの削除 - とみぞーノート

    1. 概要 MySQLでレプリケーションを行っているとMasterにバイナリログが溜っていきディスクを圧迫するので定期的に削除してやる必要がある。 2. 手順 2.1 レプリケーション状態の確認 まず、どこまでバイナリログを削除してよいかを調べる。 Slave側でSHOW SLAVE STATUSを実行し、Slaveがバイナリログをどこまで読み取っているかを調べる。「Master_Log_File」が現在参照中のバイナリログ。以下の例ではskylancer00-bin.000084を使用していることになるので、skylancer00-bin.000083まで削除してしまってよいことになる。Slaveが複数いる場合は、全Slaveについて確認を行う。 mysql> SHOW SLAVE STATUS \G *************************** 1. row ********

  • 特集:基礎から理解するデータベースのしくみ - 特集:基礎から理解するデータベースのしくみ:ITpro

    「データベースはブラックボックス。どんなSQL文を投げたらどんな結果が返ってくるかさえ知っていればよい」---そう思っている人も多いかもしれません。 しかし,物のソフトウエア・エンジニアを目指すのであれば,データベースが動く仕組みを学ぶことは避けて通れません。パフォーマンスなどに問題が生じたときどこから手を付けていいのか皆目見当がつかない,といった事態に陥りかねません。 市販のRDBMSの内部はかなり複雑ですが,基的な部分を理解するのはそれほど難しくありません。この特集でデータベースの動く仕組みを理解してください。 イントロ ●ブラックボックスのままでいいの? 基礎から理解するデータベースのしくみ(1) Part1 ●SQL文はどのように実行されるのか 基礎から理解するデータベースのしくみ(2) 基礎から理解するデータベースのしくみ(3) 基礎から理解するデータベースのしくみ(4) 基

    特集:基礎から理解するデータベースのしくみ - 特集:基礎から理解するデータベースのしくみ:ITpro
  • 2007-09-12

    MySQLユーザーズカンファレンス2007 2日目のリアルタイムレポートです。 MTVでMySQLをどう使っているか? MTV JAPAN patrick Bolduan, 開発環境でかなり使っている オープンソースを利用していきたい 使いやすい。MySQLはフリーなので迅速に仕事ができる。ベンダーと交渉がいらない。ダウンロードしてすぐ使える 開発環境をロールアウトしてプロダクションで使えるのがよい なぜMySQLを使うことにしたか? MTV JAPAN patrick Bolduan, 個人的に他のオープンソースとともに8〜9年使っていた MySQLに親しんでいた。MTVに移ってからもそれを使い続けたかった 安定性、パフォーマンス、使いやすさについて、MTVの例についてどのように考えているか MySQL AB Monty, もう使っていたということで追加努力が必要なかった 一番は使いやす

    2007-09-12
  • 1