タグ

パーティションに関するsurface0のブックマーク (5)

  • CakePHP 日付別パーティショニングするビヘイビア - 130単位

    MySQL 日付別パーティショニングの運用 - 130単位 前回MySQLのパーティショニングを簡単にまとめてみました。実験はCakePHPのアプリでしていて、ついでにつくったビヘイビアを晒してみます。GitHubにもあげてます。 no title ビヘイビア app/models/behaviors/以下にdate_partitionable.phpとして保存します。中身はSQLをつくって実行しているだけの単純なものです。 <?php class DatePartitionableBehavior extends ModelBehavior { public function createPartition(&$Model, $field, $date) { $ts = strtotime($date); if ($ts === false) { return false; } $par

    CakePHP 日付別パーティショニングするビヘイビア - 130単位
  • MySQL 日付別パーティショニングの運用 - 130単位

    MySQL :: MySQL 5.1 リファレンスマニュアル :: 15 パーティショニング http://dev.mysql.com/doc/refman/5.1/ja/partitioning.html 実験的にやってみただけでノウハウとして固まってはいないのですが、現状の知識をまとめてみたいと思います。 前提 MySQL 5.1以降 検証した環境は5.1.47 日付ごとにパーティショニング カラムは一意な"id"と作成日付の"created"があるとする 準備 idとcreatedを複合でプライマリキーにする パーティショニングの条件はプライマリキーに含める必要がある idがAUTO_INCREMENTであればPRIMARY KEY (id, created)の順のみ createdをTO_DAYS()してパーティショニングする 大枠と個別のパーティションの両方でTO_DAYS()す

  • 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)編
    surface0
    surface0 2012/03/22
    そうなの?ハマるわ。
  • ricollab Web Tech Blog » Blog Archive » MySQLパーティショニングについて(その1:基本知識編)

    初めまして、リコーの濱田です。このたび私もブログを担当することになりました。今後ともよろしくお願いいたします。 エントリではデータベースに関する技術トピックとして、MySQL 5.1 から導入された機能であるパーティショニングについて書こうと思います。少し長くなりそうなので、「基知識編」「性能検証編」の2回に分けて書くことにします。 今回は「基知識編」として、パーティショニングの概要と基的な使い方について紹介します。 パーティショニングの概要 パーティショニングとは、事前に設定されたルールに従ってデータをパーティションと呼ばれる部分的なテーブルに分割する仕組みです。 データ挿入時には、設定ルールに従ってデータが該当するパーティションに自動的に振り分けられます。データ参照時には、オプティマイザがクエリから必要なパーティションを判断し、該当するパーティションのみにアクセスします。これ

  • 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_

  • 1