【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?

ローカルのパソコンにXAAMPをインストールし
そのなかでPHPを使用してとあるデータの処理を行っています。
# MySQL 5.1.41 + PBXT engine
# PHP 5.3.1
# phpMyAdmin 3.2.4

使用しているテーブルの概要は以下のような形になっています。
id | URL | DATA | DATE

処理の内容としては
PHP上でURLにアクセスしデータを取得、一部のデータを抽出しDATAに挿入(UPDATE)するという形をとっています。

処理の対象となるデータが10万行以上に及ぶため、効率良く処理を行うための様々な方法を探していたのですが、テーブルをMyISAMから行単位のロックが可能なInnoDBに変更し処理を実行しているPHPに複数のコネクションからという考えにいたりました。

私自身あまり理解していないのですが

1.現状のMyISAMではたとえ複数のコネクションからアクセスし、update処理を行ってもテーブル全体にロックがかかっているため単体のコネクションからのアクセスと比べて処理の速度はかわらない。

2.InnoDBは行単位でのロックが可能なため、UPDATE対象の行以外はロックが行われず、複数からのコネクションでアクセスすればより高速に処理が可能

というえ考えで間違いないでしょうか?

また、この考えが間違いでないという前提の質問なのですが、実際InnoDBに変更して同じ処理を行ったのですが処理速度はまったく変化ありませんでした。単純にInnoDBに変更しただけではダメなのでしょうか?
SQL文自体になにか変更を加える必要があるのでしょうか?

わかりにくい質問かもしれませんが
よろしくお願いいたします。

A 回答 (1件)

>PHP上でURLにアクセスしデータを取得、一部のデータを抽出し



の部分がおそいだけじゃないですか?
更新フロー自体が非効率であればデータベースエンジンによる
差はあまりでないでしょう

>SQL文自体になにか変更を加える必要があるのでしょうか?

ロックの問題より、考えるべきはトランザクションや外部キーですね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す