タグ

MySQLに関するmiabiのブックマーク (38)

  • MySQLのmy.cnfファイルサンプル

    MySQLのバージョン インストールされたMySQLのバージョンは以下のようになります。 名前 バージョン ダウンロード元 my.cnfサンプル 以下のサンプルを参照して、my.cnfファイルを作成してください。 # このファイルは MySQL 5.6を基準として作られてあります。 # http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html を参照しました。 [mysqld] ##-------------------------------------------------------------------- # mysqldの基設定 ##-------------------------------------------------------------------- # id は 1 から 2^

    MySQLのmy.cnfファイルサンプル
    miabi
    miabi 2015/02/22
  • MySQL5.6での新しい暗黙のデフォルトを改めて

    使ってみたりBugsに色々上がったりしているのを見たのでメモ。 ネタ元はOracle公式のここ。 MySQL Server 5.6 defaults changes ・binlog_checksum ⇒5.6からの新規パラメータ。 暗黙のデフォルトはcrc32だが、 マスターが5.6、スレーブが5.5以下の(定石を無視した)環境ではnoneでないとI/O Threadが転ける。 ・innodb_buffer_pool_instances ⇒5.5ではデフォルト1が、デフォルトautosized8に。 autosizedではinnodb_buffer_pool_sizeが1300M以上の時はinnodb_buffer_pool_size/128Mに設定されるらしい。 木下さんが昔「5.5では1から動かさない方が良いよ」って書いていたけれど、 Dimitriさんが5.6でやったやつを見ると使い

    miabi
    miabi 2013/02/25
  • MySQLバックアップの基本

    バックアップ勉強会#2 (#bkstudy) での発表資料です。 http://atnd.org/event/bkstudy02 MySQLバックアップの基的な内容についてまとめています。Read less

    MySQLバックアップの基本
    miabi
    miabi 2012/11/22
  • MySQLのmysqldump で --skip-opt を使うときに気をつけるただひとつのオプション - sakaikの日々雑感~(T)編

    久々にMySQL関係でハマりました。原因は mysqldump です。実は数ヶ月前にも同じ現象で悩み、その時は深い調査しないまま対処療法をしてしまいました。今回、やはり技術者たるもの、しっかりと根原因を追及しなければならないなと反省した次第です。 MySQL 5.0 以降の mysqldump では --opt オプションがデフォルトで有効となっています。これは以下の8つのオプションを一括して指定するオプションです。 --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset この中で --extended-insert オプションがあることにより、レコードをコンマ区切りにして、できるかぎり一括してひとつのINSERT文

    MySQLのmysqldump で --skip-opt を使うときに気をつけるただひとつのオプション - sakaikの日々雑感~(T)編
    miabi
    miabi 2012/09/21
  • MySQLのユーザ管理

    MySQL のユーザ管理について解説していきます。誰でも大切なデータにアクセスする事ができてしまっては困るので、きちんとユーザごとに管理しておくようにしましょう。 ■データベースの作成 まず、root でログインし、テーブルを作成しておきます。show databases;でdb1テーブルが作成されたことを確認してください。なお、SQL文の最後には必ず「; 」が必要になります。「; 」は「\g 」でも代用できます。

    miabi
    miabi 2012/08/23
  • http://www.2ch-search.net/blog/3

  • トヤヲ.ネット

    このエリアへのアクセスは、ログイン若しくは許可された権限が必要です。 ページが自動的に更新されない場合はここをクリックしてください

    miabi
    miabi 2012/07/08
  • http://blog.tofu-kun.org/071206185929.php

    miabi
    miabi 2011/12/02
  • You can't specify target table 'xxx' for update in FROM clause - Pistolfly

    You can't specify target table 'xxx' for update in FROM clause MySQLでは、サブクエリ FROM 節と更新対象の両方に同じテーブルを使用することはでき ない。 Source: MySQL :: MySQL 5.1 リファレンスマニュアル :: 12.2.8.9 サブクエリ エラー mysql> delete from user \ -> where user.id in \ -> (select user.id from user \ -> left join reserve_data on user.id = reserve_data.user_id where reserve_data.id is null); ERROR 1093 (HY000): You can't specify target table 'use

    You can't specify target table 'xxx' for update in FROM clause - Pistolfly
    miabi
    miabi 2011/11/16
  • MySQLでランダムにN件取得する方法のパフォーマンス比較 - しんふぉにゃん

    こちらと同じような比較を自分でもやってみました。 私はMySQLに関してあまり深い知識を持っていないため、検証の方法や設定値の問題などがあるかもしれませんが、ざっくりとした傾向は分かるかと思います。 まず、今回使用しているテスト用環境のバージョン等です。 OS Fedora Core 7 MySQL 5.0.45 PHP 5.2.6 # やや古い・・・。 また、テストで使用するテーブルは以下のような簡単なものです。 ┌────┬───────┬───┐ │ 名前 │   型   │サイズ│ ├────┼───────┼───┤ │id  │int    │   │主キー ├────┼───────┼───┤ │name│varchar│ 64│ └────┴───────┴───┘ まず今回テストした6つの方法を簡単に説明します。 (1) RAND()列を追加してソート 以下のようなSQL

    miabi
    miabi 2011/11/04
  • MySQL :: MySQL 8.0 リファレンスマニュアル :: 24.3.5 パーティションに関する情報を取得する

    このセクションでは、既存のパーティションに関する情報を取得する方法 (いくつかの方法が可能) について説明します。 そのような情報を取得する方法には次のものが含まれます。 SHOW CREATE TABLE ステートメントを使用して、パーティション化されたテーブルの作成に使用されたパーティショニング句を表示する。 SHOW TABLE STATUS ステートメントを使用して、テーブルがパーティション化されているかどうかを判別する。 INFORMATION_SCHEMA.PARTITIONS テーブルを照会する。 ステートメント EXPLAIN SELECT を使用して、特定の SELECT で使用されているパーティションを確認します。 MySQL 8.0.16 から、パーティション化されたテーブルに対して挿入、削除、または更新が行われると、バイナリログには、パーティションに関する情報と、行

  • レプリケーションの復旧 - omoonのブログ

    サーバの構成 マスタ1台 スレーブ3台 バージョンはいずれも4.0系 mst(192.168.1.1) --+-- slv1(192.168.1.101) | +-- slv2(192.168.1.102) | +-- slv3(192.168.1.103) 状況 スレーブのうち1台(slv2)に誤って更新系クエリを発行。以降正常にレプリケーションが行われなくなっていた。 mst(192.168.1.1) --+-- slv1(192.168.1.101) | +-- slv2(192.168.1.102) <-- これがエラー | +-- slv3(192.168.1.103) データサイズはtarでアーカイブして約12GB。アーカイブ化とコピーに30分以上かかってしまう。 サービスは思いっきり稼働中のため、スナップショットをとる際のmst上のロックは許されない。 方針 正常なサーバsl

    レプリケーションの復旧 - omoonのブログ
  • 現場指向のレプリケーション詳説

    この文書は、技術評論社刊『WEB+DB PRESS Vol.22』に執筆した記事を技術評論社の 許可を得てWWWで公開しているものです。 このWWW版は校正前の原稿を元にしている点、WWW公開後に必要があれば修正する点で、雑誌版の文章とは異なる部分があります。また、図表も雑誌版とは異なります。 予めご了承ください。 また、この文章が対象しているのはMySQL 4.0系なので、最新のリリース版と比べると説明不足な点などが多々あると思います。 レプリケーションの基をおさえるには、この文書はまだ有益だと思いますが、設定レベルの説明は最新のドキュメントを参照するようにしてください。

  • MySQL Left Join - MySQL Diary

  • MySQL :: MySQL 5.6 リファレンスマニュアル :: 8.2.1.9 LEFT JOIN および RIGHT JOIN の最適化

    テーブル B は、テーブル A と A が依存するすべてのテーブルに依存して設定されます。 テーブル A は、LEFT JOIN 条件で使用されるすべてのテーブル (B を除く) に依存して設定されます。 LEFT JOIN 条件は、テーブル B からの行の取得方法を決定するために使用されます。(言い換えると、WHERE 句内のすべての条件が使用されません)。 テーブルは常にそれが依存するすべてのテーブルのあとに読み取られることを除き、すべての標準の結合最適化が実行されます。循環依存関係がある場合、MySQL はエラーを発行します。 すべての標準 WHERE 最適化が実行されます。 A に WHERE 句に一致する行があるが、B に ON 条件に一致する行がない場合、すべてのカラムが NULL に設定された追加の B 行が生成されます。 LEFT JOIN を使用して、一部のテーブルに存在

    miabi
    miabi 2011/09/30
    LEFT JOINにとって、生成された NULL行で WHERE条件が常にfalseである場合、LEFT JOINは通常の結合に変更されます。
  • MySQL 5 の場合はmytopよりinnotopのほうがいいかも - (ひ)メモ

    MySQLのモニタするのに便利なmytopなんですが、MySQL 5に対して使うと、クエリの割合表示が全部ゼロになってしまったります。 これは、MySQL 5.0.2でSHOW STATUS文が変更され、GLOBALかSESSIONというオプションを指定できるようになったことに起因します。このオプションを省略した際はSESSIONを指定したときと同じ動作となり、SHOW STATUS文で得られるのは自分自身の接続についての情報のみとなります。 mytopはオプションなしのSHOW STATUS文を使っているので、MySQL 5ではmytop自身の接続についての情報しか得られず、その影響として、クエリの割合表示が全部ゼロになってしまったりするわけです。 対応は簡単で、mytopのSHOW STATUSをSHOW GLOBAL STATUSに書き換えればいい(書き換えるとMySQL 4.1以前

    MySQL 5 の場合はmytopよりinnotopのほうがいいかも - (ひ)メモ
  • MySQLでランダムにレコードをselectする。パフォーマンス対策3つ。 - mtomizの日記

    例えばMySQLのデータベースからWEBサイト上にランダムに商品情報や広告情報を取得して、10件程度表示させたいとする。単純に、SELECT * FROM table ORDER BY RAND();を使用することが考えられるが、ランダム取得すると全件取得と同じ負荷がかかるので、データ件数が数万件以上あるような場合処理パフォーマンスが問題となる。したがって、SELECT * FROM table ORDER BY RAND() limit 0, 10;として10件ランダムに取得しようとしても全件取得相当の処理パフォーマンスとなり実用的ではない。【対策】1.取得するカラムが少ないのであれば*ではなくselect id,name,price from table order by rand() limit 0,10; などとするとかなり早い2.ランダムに”切り取る”ことができれば10件は連続し

  • MySQLパーティショニングでパフォーマンスアップ! | QK

    mysqlには、レンジパーティションってものがありまして、うーなんでしょ?ある規則にしがったデータをおのおののデータファイルに振り分けてくれる機能です。 ・データ領域が分割されるため、大量のデータを処理することによる性能上のボトルネックの発生を抑えられる ・MyISAMなど、テーブルサイズに上限がある場合でもそれ以上のデータを格納することが可能になる といった点です、少ないデータですとこれといった利点はないかと思いますが、数百万規模データですと、このデータ分割が、大きな効果を呼ぶ。。かもしれないですし、そうでないかもしれません(汗 ただ、はっきりといえるのが、ある規則に従ったデータを、SELECTする際にそのSELECTで必要の無いデータまで、mysqlがシークする必要がないっていったところでしょうか?ただし、データをまたぐ検索が発生する場合は、パフォーマンスは非パーティションテーブルと比

    miabi
    miabi 2011/02/03
  • MySQLのパーティショニングのハマリ所 - sakaikの日々雑感~(T)編

    今までマニュアルを斜め読みした程度で「MySQL 5.1 から使えるようになったパーティショニング。便利そうだな」などと思っていたのですが、このたび実際に使いたいシーンが出てきたので、利用を前提に調べてみました。 そしたら、ハマることハマること。やりたいことは、日付カラムで1日ごとのパーティションにしたいだけだったのですが(向こう2年分くらいパーティション作っておいて、運用で「古いパーティション削除→新しいのを追加」でいいかなと考えていました)、これができない。 ハマりの原因は「パーティショニングの条件は、プライマリーキーの一部でなければならない」という制約。 http://dev.mysql.com/doc/refman/5.1/ja/partitioning-limitations.html 今回使用を検討したテーブルはプライマリーキーが重要だったので、 CREATE TABLE pt

    MySQLのパーティショニングのハマリ所 - sakaikの日々雑感~(T)編
    miabi
    miabi 2011/02/03
  • MySQLのRANGEパーティションを使う | 村式流 イッパシエンジニアへの道

    MySQLのRANGEパーティションのお話です。 MySQL5.1からサポートされているパーティショニングですが、ログテーブル等、レコード数が多くなりがちなテーブルに日付でパーティショニングしてます。 最初から遠い未来までのパーティションを切るのは気持ち悪いし、長く運用されるサービスの場合は忘れる可能性もあるのでバッチを回すのがいいと思いますが追加する場合の手順と注意点です。 ・まずはパーティションを作成 CREATE TABLE `mura`.`test1` ( `date` DATE NOT NULL , `name` VARCHAR( 40 ) NOT NULL , `contents` VARCHAR( 255 ) NOT NULL , `created_at` DATETIME NOT NULL ) ENGINE = InnoDB PARTITION BY RANGE (TO_

    miabi
    miabi 2011/02/03