You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
Deadlocks are dreadful. They can be a minor annoyance or, depending on your application’s domain, can seriously affect functionality. At Brightbox, many of our systems are highly concurrent and we’ve had our fair share of deadlocks. We’ve learnt a few lessons about preventing them and we’re hoping those lessons will be useful to others. Before we delve into it, I recommend that you read our earlie
MySQL (InnoDB) のトランザクション分離レベルは、デフォルトで REPEATABLE READ です。この設定では、トランザクションの最初のクエリでデータベースのスナップショットを取ってしまうので、他のトランザクションがコミットした変更が見えません。Web アプリケーション開発では結構使いづらい分離レベルです。特に理由がないかぎり READ COMMITTED を採用したいところです。 Rails 3.x 時代までは、 ActiveRecord::Base.connection. execute('SET TRANSACTION ISOLATION LEVEL READ COMMITTED') ActiveRecord::Base.transaction do # ... end のように書かなければなりませんでしたが、Rails 4 でトランザクションごとに分離レベルを指定で
Rails3はSQLite3とPrototypeがデフォルトになっていますが、業務などで実際に扱う際はMySQLとjQueryを利用することが多いと思います。そこで個人的なアプリ作成手順が固まってきたので、一旦まとめてみます。調査/検証目的のアプリの想定で、テストの生成もしないようにしてます。 環境 Mac OS X Snow Leopard Ruby 1.9.2p0 (MacPorts) Rails 3.0.5 MySQL 5.5.8 (DMG Archive) アプリ作成 rails new sample -JT -d mysql -JオプションでPrototype生成スキップ -TオプションでTest::Unit生成スキップ -dオプションでデータベースMySQL指定 Gemfile、config/database.ymlがMySQL仕様になる gemはmysql2が利用される Ge
「よいさいと」で日本語の検索やろうと思って忘れていました。せっかくなので、最近のMySQLの日本語全文検索の事情についてまとめてみます。2007/10/3時点。 ちなみに、以前に別のアプリで全文検索を実装したときには、例の如く「メカブで分解して16進の文字列で格納する」という方法でやっていたのですが、もうやりたくないです。 アルゴリズムいろいろ インデキシングの方法です。 単語分かち書き 形態素解析エンジンを使って、日本語の文章を分解し、スペースを挿入してインデキシング。 形態素解析のエンジンにはmeCabとかchaSenがある。 インデックスのサイズはn-gramと比較して小さい。 辞書に登録されていない単語がある場合にはナイーブ。「脳トレ」「みっくみっく」 n-gram 基本的に文章の任意の位置から後方n文字を切り出してインデキシングする。 bigramの場合 「その域に達していない」
RailsのPDFも読まずに「How to make a todo list program with Rails」の チュートリアルをやってみてるんだけど、 No such file or directory - /tmp/mysql.sock ときたもんだ。 この解決方法は樂水開発日記さんの「MySQLのソケットの位置はどうやって指定する?」 に書いてあるんだけど、あとでぱっと見てわかりやすいようにメモメモ。 [yz@localhost Todo]$ mysqladmin -p version Enter password: mysqladmin Ver 8.40 Distrib 4.0.23a, for pc-linux-gnu on i686 Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB Th
似たようなプラグインもいくつかあったけど、どれもしっくり来なかったから自分で作った。 その名も「Mysql Cluster Adapter」。 eth0jp's activerecord-mysql_cluster_adapter at master - GitHub http://github.com/eth0jp/activerecord-mysql_cluster_adapter MySQL Cluster Adapterの機能 複数Writableに対応 ただReadOnly機能がないだけだけど。 ※マルチマスターレプリケーション対応ではない。 クラスタリング・自動復旧 リクエストが来た時にランダムで使うノードを選択する。 もし選択したノードが死んでいたら再接続を試みて、接続出来なかったら次のノードを選択する。 全てのノードが死んでたら500エラー。 トランザクション トランザクシ
MySQL + Railsで大規模サイト構築実験もいよいよ大詰めです。 前回までは、 DB : Active-Active LB : Active-Passive 構成を想定して構築してきました。 また、レプリケーションの遅れによる更新の衝突を避けるための解をいくつか紹介しました。 だがActive-Active構成にするコストが大きい!! 「そもそもActive-Active構成で組む必要があるのかどうか?」といった疑問が沸いてきました。 調査を進めたところ、DBのActive-Active構成にするコストに対して、メリットが少ないことが判明。 [Active-Active構成を組むメリット] 瞬間的なコネクション増への対応が可能。 コネクションの負荷分散のみ可能。(I/Oの負荷分散はできない) [Active-Active構成を組むデメリット] 更新系クエリの負荷分散は不可。 レプリケ
このエントリでは Ruby on Rails と MySQL を使って日本語の全文検索を行う方法を記述する。Ruby on Rails のバージョンは 2.0.2、MySQL のバージョンは 5.0.67、Tritonn のバージョンは 1.0.12、Hyper Estraier のバージョンは 1.4.10 を使用した。サンプルの文章データとして、あらゆる日本人にとって極めて身近な著作権切れ文章である『ドグラ・マグラ』と『黒死館殺人事件』を利用した。処理のために整形したデータは本エントリに添付しておく。またデータベースへアクセスするコードではマイグレーションを除きできるだけベンチマークを取るようにし、その結果は本エントリの最後に記載する。 ページネーション Rails でページネーションを実現する will_paginate という plugin は ActiveRecord に標準でつ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く