1. Perl RDBMS Programming id:karupanerura DBI DBIx::* SQL::* etc... 13年3月23日土曜日 2. about.me id:karupanerura かるぱねるら web engineer c/js/perl/elisp さいきんH本読んでる MF 13年3月23日土曜日
![Perl RDBMS Programming(DBI/DBIx::Sunnyのはなし)](https://cdn-ak-scissors.b.st-hatena.com/image/square/aa369e51386db46edbe98001e14ba66fd0810252/height=288;version=1;width=512/https%3A%2F%2Fcdn.slidesharecdn.com%2Fss_thumbnails%2Fchiba-pm-2-130323045032-phpapp02-thumbnail.jpg%3Fwidth%3D640%26height%3D640%26fit%3Dbounds)
最近DBへの接続をリクエスト単位ではなくリクエストを処理するプロセス単位(Starmanのworkerプロセス単位)でキャッシュしたいということがあって、DBIのconnect_cachedを使うことになった。Scope::Container::DBIでももしかしたら出来るのかもしれないけど、とりあえずconnect_cachedで実装した。そこでいろいろはまったのでメモ。 connect_cachedについて perldocに connect_cached is like "connect", except that the database handle returned is also stored in a hash associated with the given parameters. If another call is made to connect_cached wit
息子のサンタクロース1号 kazeburo です。 ウェブアプリケーションなどでデータベースとの接続をリクエスト終了後に切りたいんだけど、アプリケーションのどこかで循環参照してたりで $dbh が解放されないとデータベースに接続が溜まり、データベースの最大接続数に達して新規の接続ができなくなり、正常にサービスが続けられなくなったり、椅子が飛んできたりします。 アプリケーションのバグがすぐに見つかり、接続の滞留が解消できればいいですが、そうではない時、このモジュールが役に立つかもしれません https://metacpan.org/module/DBIx::DisconnectAll https://github.com/kazeburo/DBIx-DisconnectAll 使い方は簡単。 use DBIx::DisconnectAll; dbi_disconnect_all(); dbi
perlでデータベースを使う時に誰もが必ず使うDBI。その接続時に使うconnectメソッドの第4引数に設定しているオプションがサービスによりまちまちなんだけど、だれか鉄板設定を教えてください。 僕が使うのが、 my $dbh = DBI->connect($dsn, $user, $password, { AutoCommit => 1, PrintError => 0, RaiseError => 1, ShowErrorStatement => 1, AutoInactiveDestroy => 1, }); これ。 加えて、mysqlであれば mysql_enable_utf8 => 1 mysql_auto_reconnect => 0, SQLiteだと sqlite_unicode => 1 sqlite_use_immediate_transaction => 1 を追加し
前回は、Teng で一通りの CRUD の仕方を紹介したんですが、トランザクション処理を考慮していなかったので、Teng でトランザクション処理をする方法を紹介します。 準備 テーブルは前回使用した memo テーブルを使います。 事前に以下の様なデータを入れておきました。 mysql> select * from memo order by id; +----+-------+---------+---------------------+---------------------+ | id | title | body | created_at | updated_at | +----+-------+---------+---------------------+---------------------+ | 1 | Hello | World | 2011-11-24 23:0
大体のRDBMSでsavepointという機能が実装さておるわけですが、 正直savepointを今までつかったことありませんでした。 savepointについては http://dev.mysql.com/doc/refman/5.1/ja/savepoints.html http://msdn.microsoft.com/ja-jp/library/ms378414%28SQL.90%29.aspx などを見るとよいでしょう。 簡単に言うと、トランザクションの途中でエラーになった場合、 savepointでマークした場所にまでrollbackで戻れるってかんじすね。 で、使いどころとしては 複数のプロセスが同テーブルをinsertしたりするときにユニーク制約がかかってdupで落ちる時なんかに 使ったりするのかなーと思っているのですが、 もっと有効な使い方があるんじゃないかなとおもってい
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く