タグ

dbicに関するsoh335のブックマーク (8)

  • DBIx::Class で FORCE INDEX する方法 - Articles Advent Calendar 2011 Dbix

    DBIC って… 最近なにかと dis られることの多い DBIx::Class (DBIC) ですね。 曰く「重い」「複雑すぎる」「コードが読めない」……まあそれはそうかもしれませんが、数年前の DBIC 全盛期に作られて今まで生き残っているシステムを、そう簡単に他の ORM や生 DBI に置き換えられるものでもありません。 自分の管理しているとあるシステムは DBIC + MySQL で動いていますが、最初はデータも多くなく、DBIC が生成する SQL で何ら問題はなかったのです。 が、データが増えて行くにつれて、 MySQL が適切な index を使用してくれないとパフォーマンス的に厳しい、FORCE INDEX 句を付けたい!という状況に出くわしました。そこで試行錯誤して見つけた、FORCE INDEX を指定する方法をご紹介します。 どうやって? たとえば以下のように、fo

    DBIx::Class で FORCE INDEX する方法 - Articles Advent Calendar 2011 Dbix
    soh335
    soh335 2013/06/18
    つらい.........
  • SQLでincrementした値を表示するやつ - かみぽわーる

    MacBook Air 11インチ欲しい! @sugyanさんのSQLでincrementした値を表示する方法を考える - すぎゃーんメモを生DBIでやってみたのとベンチマークとってみた。 トランザクションなし Rate dbic teng dbi1 dbi2 dbic 578/s -- -64% -92% -92% teng 1587/s 175% -- -78% -79% dbi1 7143/s 1136% 350% -- -7% dbi2 7692/s 1231% 385% 8% --トランザクションあり Rate dbic teng dbi1 dbi2 dbic 581/s -- -59% -88% -92% teng 1429/s 146% -- -71% -81% dbi1 5000/s 760% 250% -- -35% dbi2 7692/s 1223% 438% 54%

    SQLでincrementした値を表示するやつ - かみぽわーる
  • Re:DBICが発行するSQLのテーブル名をクォートさせたい - とほほのN88-BASIC日記

    DBICが発行するSQLのテーブル名をクォートさせたい - Lism.in * blog - nekoya (id:studio-m) 一応Cookbookに書いてあるけどちょっと注意。 My::Schemaに __PACKAGE__->storage->sql_maker->quote_char('`'); と書いてもSchemaクラスのstorageが準備されるのはconnectの後なので Can't call method "sql_maker" on an undefined valueでこける。 ドキュメントが間違ってるってことですね。 なので my $schema = My::Schema->connect($dsn, $user, $pass, {quote_char => '`',}); か my $schema = My::Schema->connect(...); $s

    Re:DBICが発行するSQLのテーブル名をクォートさせたい - とほほのN88-BASIC日記
  • hide-k.net#blog: DBIx::Class::DigestColumnsがちょっと便利になった件

    以前、DBIx::Class::DigestColumnsの問題というエントリーでDBIC::DigestColumnsがいまいち使いづらいようなことを書きましたが、今年に入ってアップデートされてちょっと便利になった模様。 ユーザー管理で生パスワードを保存したくない場合には結構便利なコンポーネントです。 テーブルを作って create table users ( id integer not null primary key, username text not null, password text not null ); schemaクラスはLoaderにまかせて package MyApp; use strict; use base qw/DBIx::Class::Schema::Loader/; __PACKAGE__->loader_options( components =>

    soh335
    soh335 2010/10/27
  • DBIx::Class::Manual::Cookbook - レシピいろいろ - perldoc.jp

    名前¶ DBIx::Class::Manual::Cookbook - レシピいろいろ レシピ¶ 検索¶ ページ処理された結果セット¶ When you expect a large number of results, you can ask DBIx::Class for a paged resultset, which will fetch only a small number of records at a time: 結果セットが膨大になりそうなら、ページ処理された結果をDBIx::Classで取得できます。 一回に、少しのレコードしかとってきません: my $rs = $schema->resultset('Artist')->search( undef, { page => 1, # page to return (defaults to 1) rows => 10, #

    soh335
    soh335 2010/09/26
  • Schema::Loader 使い方 - unknownplace.org

    mizzy.org : Re: DBICとDBIx::Class::Schema::Loader 僕のいろいろな勘違い 僕の中で流行ってる使い方があるのでかぶせて書いておいてみる。mizzy さんの二個目の例を自分ルール化させた感じ? 作業は一般的なCatalystアプリのディレクトリ構造上であるとして、そこに新しく schema というディレクトリを作成。 そんで、 schema/lib/Schema/{TableName}.pm に各テーブルのリレーション定義とかメソッドとかを自分で書く。実際にこのライブラリは Catalyst にロードされない。 上記ファイルを元に Schema::Loader の make_schema_at を使い lib/MyApp/Schema.pmlib/MyApp/Schema/*.pm にコードを自動生成して、そちらをロードするという感じ。こちらのコー

  • DBICとDBIx::Class::Schema::Loader 僕のいろいろな勘違い | ブログが続かないわけ

    先日から、DBICに関するエントリをいくつかしているが、そこに大変参考になるトラックバックやコメントを頂いている。何となく理解しているつもりだった、Schema::Loader の仕組みなど、いくつか勘違いしているっぽいことがあったので、ここにまとめておく。 今日のCPANモジュール|use DBIx::Class; 事前に「データベース」に対応したクラス(スキーマクラス)や、「テーブル」に対応したクラスを用意しておき、プログラムではそいつらを通して DB にアクセスします。 そうだね。ここまではいい。スキーマクラスはしっかりと用意している。ただ、このスキーマクラスに対する理解がちょっと違ったみたいだ。 この対応クラスを用意するには手動と自動の2種類あります 自動の場合は、DBIx::Class::Schema::Loader を継承し 手動の場合は、DBIx::Class::Schema

    DBICとDBIx::Class::Schema::Loader 僕のいろいろな勘違い | ブログが続かないわけ
  • DBICでcreate_relatedをoverrideする : maaash.jp

    Posted on 11月 26, 2009 Filed Under perl | DBICを使っています。 User has_many Histories っていう関係のテーブルUserとHistoryがあった時に、 Userの行それぞれに対して、最新のHistoryをUserの行の中にキャッシュしておくと便利なときがあります。 そんな時に、$user->add_to_histories ってやった時に $userもupdateしたい、という話です。

  • 1