タグ

2013年1月7日のブックマーク (16件)

  • Redisのメモリ管理ポリシーについて

    オンメモリ KVS の Redis では、使用メモリに上限を設定し、閾値を超えた場合のポリシー(maxmemory-policy)を複数の中から設定できるようになっている。 パラメータとポリシーを整理したのが以下 使用メモリの上限値 redis.conf の次のパラメータで設定する。 maxmemory maxmemory-policy メモリ使用量が閾値を超えている状況でキー追加する場合の振る舞いを定義する。以下の 6 つの maxmemory-policy から選択できる。 volatile-lru : remove the key with an expire set using an LRU algorithm allkeys-lru : remove any key accordingly to the LRU algorithm volatile-random : remove

    Redisのメモリ管理ポリシーについて
    bluerabbit
    bluerabbit 2013/01/07
    Redis maxmemory
  • Common DBA tasks for MySQL DB instances - Amazon Relational Database Service

    In the following content, you can find descriptions of the Amazon RDS-specific implementations of some common DBA tasks for DB instances running the MySQL database engine. To deliver a managed service experience, Amazon RDS doesn't provide shell access to DB instances. Also, it restricts access to certain system procedures and tables that require advanced privileges. For information about working

    bluerabbit
    bluerabbit 2013/01/07
    slow_log
  • RDS : Storage容量の内訳について - aws memo

    RDSは、起動時および停止中にストレージサイズを変更可能。 ストレージの空き状況も、CloudWatchのFreeStorageSpaceで確認可能。 では、Storageには何がはいっているのか? https://forums.aws.amazon.com/thread.jspa?threadID=75508 The storage space used by your instance does not include the MySQL or Oracle binaries, but does include the databases, innodb log files, binlogs, and the InnoDB tablespace (ibdata1, which grows automatically) and log files which are usually sm

    RDS : Storage容量の内訳について - aws memo
    bluerabbit
    bluerabbit 2013/01/07
    slow_log
  • Amazon RDS で肥大化したslow_logテーブルをクリアする方法

    以前AmazonRDSでslow queryを出力するようにする方法にてRDSでslow_logを出力するように設定すると、mysqlデータベースのslow_logテーブルにログが保存されるようになるのですが、このテーブルに保存されたデータは、RDSで作成できるユーザーの権限では削除することができません。 mysql> delete from slow_log; ERROR 1556 (HY000): You can't use locks with log tables. mysql> truncate table slow_log; ERROR 1044 (42000): Access denied for user 'xxxx'@'%' to database 'mysql' このことはgeneral_logにも言えるのですが、 これに対して、Amazonから以下のストアドプロシージ

    bluerabbit
    bluerabbit 2013/01/07
    slow_log
  • MySQL 5.1.41リリース - SH2の日記

    出ました。今回は機能の追加・変更が4件、バグ修正が62件あります。 MySQL 5.1.38から同梱されるようになったInnoDB Pluginですが、MySQL 5.1.41ではバージョンが1.0.5に上がり、ついにRC(リリース候補版)となりました。再掲になりますがInnoDB PluginはビルトインのInnoDBに比べて以下のような機能強化が施されており、非常に有用性の高いものです。そろそろ利用を検討しても良い時期に入ってきたのではないかと思います。 高速なインデックス作成。従来InnoDBCREATE INDEXはテーブルの再作成を伴っていました テーブルとインデックスの圧縮 (検証結果その1、その2) INFORMATION_SCHEMAによるロック競合の検出 (検証結果) CPUスケーラビリティの向上 (1.0.3から) バックグラウンドI/Oスレッドの増加 (1.0.4か

    MySQL 5.1.41リリース - SH2の日記
    bluerabbit
    bluerabbit 2013/01/07
    innodb_old_blocks_time
  • MySQL InnoDBのネクストキーロック おさらい - SH2の日記

    MySQLのInnoDBストレージエンジンは行ロックをサポートしています。しかしOracleと同じ感覚でアプリケーションを作っていると、思わぬところでデッドロックに出くわすことがあります。これはInnoDBのロック範囲がOracleよりも微妙に広いためです。 実際の例で確認してみましょう。 mysql> select * from t; +----+------+ | c1 | c2 | +----+------+ | 10 | a | | 15 | a | | 20 | a | | 25 | a | | 30 | a | | 35 | a | | 40 | a | | 45 | a | | 50 | a | +----+------+c1列は主キーになっています。1つめのセッションで以下のSQLを実行します。 mysql> set tx_isolation = 'repeatable-r

    MySQL InnoDBのネクストキーロック おさらい - SH2の日記
  • MySQL :: MySQL 8.0 リファレンスマニュアル :: 15.7.2.3 一貫性非ロック読み取り

    一貫性読み取りとは、InnoDB がマルチバージョンを使用して、ある時点でのデータベースのスナップショットをクエリーに提供することを意味します。 クエリーには、その時点よりも前にコミットされたトランザクションによる変更のみが表示され、その時点よりもあとのトランザクションまたはコミットされていないトランザクションによる変更は表示されません。 このルールの例外として、同じトランザクション内の以前のステートメントによる変更はクエリーに表示されます。 この例外によって、次のような異常が発生します。テーブル内の一部の行を更新すると、更新された行の最新バージョンが SELECT に表示されますが、いずれかの行の旧バージョンも表示される可能性があります。 その他のセッションで同じテーブルが同時に更新される場合、その異常は、データベースに存在しない状態でテーブルが表示される可能性があることを意味します。

    bluerabbit
    bluerabbit 2013/01/07
    ALTER TABLE は元テーブルのテンポラリ コピーを作成し、それができた時に元テーブルを破壊する事で機能する為、一貫した読み取りは ALTER TABLE 全体には機能しません[mysql]
  • MySQL :: MySQL 4.1 リファレンスマニュアル :: 7.5.10.1 SHOW INNODB STATUS と InnoDB モニタ

    バージョン 3.23.42 より、InnoDB の内部状態に関する情報を出力する InnoDB モニタが InnoDB に組み込まれました。 バージョン 3.23.52 および 4.0.3 より、SQL コマンド SHOW INNODB STATUS を使用して、標準 InnoDB モニタの出力を SQL クライアントへ取り込めるようになりました。 このデータは、パフォーマンスチューニングに役立ちます。mysql 対話型 SQL クライアントを使用している場合は、ステートメントの末尾にあるセミコロンを \G に置き換えることで、出力が判読しやすくなります。 SHOW INNODB STATUS\G InnoDB モニタのもう 1 つの使い方として、サーバ mysqld の標準出力に InnoDB モニタから継続的にデータを書き込むことができます(注意: MySQL クライアントからは何も出

    bluerabbit
    bluerabbit 2013/01/07
    innodb_monitor
  • たった3秒でInnoDBのデータローディングが快適になるライフハック

    MySQLに限った話ではないが、データベース管理システムに大量のデータを投入するのは時間が掛かり大変苦痛を伴う作業である。劇的に効能があるわけではないが、MySQLを利用しているとき、特にInnoDBを使っている場合にはデータの投入を高速化するためにいくつかテクニックがあるので紹介しよう。皆さんの作業時間が短縮され、少しでも早く帰路に着いたりサービスインさせたりという形でお役に立てれば幸いである。ちなみに、タイトルはネタであるのだが、もし当に3秒で以下の全ての設定を行えた人が居たら教えて頂きたい! ログファイルサイズの調整データ投入時に限った話ではないが、ログファイルサイズを調整するのは更新性能にとって非常に重要なファクターである。バッファプールのサイズが重要なことに代わりはないが、同じぐらいログファイルのサイズも重要である。InnoDBはログファイルを使い切ってしまうと、バッファプール

    たった3秒でInnoDBのデータローディングが快適になるライフハック
    bluerabbit
    bluerabbit 2013/01/07
    CSVストレージエンジンを使って高速にデータを登録する
  • 大人のためのInnoDBテーブルとの正しい付き合い方。

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

    大人のためのInnoDBテーブルとの正しい付き合い方。
    bluerabbit
    bluerabbit 2013/01/07
    InnoDBの場合、ANALYZE TABLEは不要である。なぜなら、InnoDBが自発的に統計情報を更新するからだ。InnoDBのOPTIMIE TABLE相当(ALTER TABLE t1 ENGINE INNODB;はHWMを下げるだけか。
  • SELECTなのにテーブルにロックが掛かる!〜InnoDBトランザクションにおけるINSERT INTO SELECT FROMの罠〜 - XOOPS専門-株式会社RYUS

    SELECTなのにテーブルにロックが掛かる!〜InnoDBトランザクションにおけるINSERT INTO SELECT FROMの罠〜 カテゴリ :  技術全般 2010-10-14 19:37 MySQLのInnoDBはトランザクションが使えたり、行ロックが使えたりして、データの整合性の点でMyISAMに比べて優れています。 業務系アプリになると、データの整合性が重視されることも多く、トランザクションを使うことも増えます。 今回、そのトランザクションを使っていて、思いもよらないクエリがきっかけで、テーブルにロックが掛かってハマりました。 テーブル構造はこのような感じ...。 CREATE TABLE `working` ( `id` int(11) NOT NULL AUTO_INCREMENT, `col` int(11) NOT NULL DEFAULT '0', PRIMARY K

    bluerabbit
    bluerabbit 2013/01/07
    INSERT INTO .. SELECTでSELECT側にもロックがかかる。UPDATEも同じ。
  • MySQL InnoDBストレージエンジンのチューニング(後編)

    チューニングの基礎 それでは、具体的にInnoDBでどこをチューニングするべきかを見ていこう。 バッファプール 最も基となるのがバッファサイズの調整だ。ワーキングセットが全てバッファに収まらない限り、バッファプールは大きければ大きいほど良い。その分ディスクアクセスが減るからだ。バッファサイズが小さいと、キャッシュミス時にディスクからReadするのに時間がかかり、I/Oがボトルネックになってしまう。予算のある限りメモリを目いっぱい搭載し、バッファプールに割り当てよう。InnoDBのバッファプールは、innodb_buffer_pool_sizeオプションで設定する。利用可能なメモリは、他の処理に必要な分を除いたすべてをInnoDBのバッファプールに割り当てよう。 innodb_buffer_pool=32G ここで一つ注意がある。innodb_buffer_pool_sizeはバッファプー

    MySQL InnoDBストレージエンジンのチューニング(後編)
  • MySQL :: MySQL 5.1 リファレンスマニュアル (オンラインヘルプ) :: 9.8.6 InnoDB 内で各種 SQL ステートメントによって設定されるロック

    Section Navigation      [Toggle] 9.8 InnoDB トランザクションモデルとロック9.8.1 InnoDB ロックモード 9.8.2 一貫性非ロック読み取り 9.8.3 SELECT ... FOR UPDATE と SELECT ... LOCK IN SHARE MODE ロック読み取り 9.8.4 InnoDB レコード、ギャップ、およびネクストキーロック 9.8.5 ネクストキーロックによるファントム問題の回避 9.8.6 InnoDB 内で各種 SQL ステートメントによって設定されるロック 9.8.7 暗黙的なトランザクションコミットとロールバック 9.8.8 デッドロックの検出とロールバック 9.8.9 デッドロックにどのように対処するか ロックする読み取り、UPDATE、または DELETE は通常、SQL ステートメントの処理の中で走査

    bluerabbit
    bluerabbit 2013/01/07
    ロックする読み取り、UPDATE、または DELETE は通常、SQL ステートメントの処理の中で走査されるすべてのインデックスレコード上にレコードロックを設定します。行を除外する WHERE 条件がステートメント内に存在するかどう
  • MySQL :: MySQL 5.1 リファレンスマニュアル :: 13.5.10.3 InnoDB と TRANSACTION ISOLATION LEVEL

    Section Navigation      [Toggle] 13.5.10 InnoDB トランザクション モデルとロック13.5.10.1 InnoDB ロック モード 13.5.10.2 InnoDB と AUTOCOMMIT 13.5.10.3 InnoDB と TRANSACTION ISOLATION LEVEL 13.5.10.4 一貫非ロック読み取り 13.5.10.5 SELECT ... FOR UPDATE と SELECT ... LOCK IN SHARE MODE ロック読み取り 13.5.10.6 ネクスト キー ロック:バグの問題を防ぐ 13.5.10.7 InnoDB 内での一貫した読み取りの例 13.5.10.8 InnoDB 内で各種 SQL ステートメントによって設定されるロック 13.5.10.9 暗黙的なトランザクション コミットとロールバッ

    bluerabbit
    bluerabbit 2013/01/07
    トランザクション分離レベルの観点では、InnoDB デフォルトは REPEATABLE READ です
  • さらにMySQLを高速化する7つの方法

    MySQLを高速化する10の方法という記事がとても好評だったようである。記事を読んで頂いた皆さん、ありがとう。 この記事に対する便乗(?)でWeb屋のネタ帳: PostgreSQLを高速化する16のポイントという記事を書いて頂いたようだが、そちらの方もかなり人気だったようである。他人が作ったソフトウェアに改良を加えるというフリーソフトウェアやオープンソースソフトウェアの精神も基は便乗であるので、便乗については大いに賛成したいというかむしろ取り上げてくれてありがとう!!と思うわけであるが、ここでさらに俺はこう考える。 と。 Web屋のネタ帳さんの記事では16のポイントが紹介されているが、漢(オトコ)のコンピュータ道の記事は10の方法だったのであと6つ足りない。オトコは数で勝負!!というわけで今日はネタを振り絞ってさらに7つのMySQL高速化テクニックを紹介しよう。 1. インテルコンパイラ

    さらにMySQLを高速化する7つの方法
    bluerabbit
    bluerabbit 2013/01/07
    innodb_locks_unsafe_for_binlogオプションを利用することで、ロックの競合を減らして同時実行性能を向上させることが可能。なんでデフォルトfalseなんよ。。
  • Memory Overcommit

    redis を起動すると、以下の2行目のように「RAMが少ない場合は vm.overcommit_memory = 1 にするように!」という警告メッセージが表示される。 $ ./redis-server [9703] 19 Feb 01:02:07 * Server started, Redis version 2.4.7 [9703] 19 Feb 01:02:07 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.over

    Memory Overcommit
    bluerabbit
    bluerabbit 2013/01/07
    Redis のメモリ使用量の確認方法