
No.2ベストアンサー
- 回答日時:
やはり先の回答で書いておくべきだったかもしれませんが、
質問にある例では各ユーザーが別々のレコードに書き込みをしていますよね。
この場合だとお互いの書き込みが他のユーザーの書き込みに影響を及ぼさないのでロックを取る必要が無いと思います。あと、ちょっと気になったので調べた感じだと、UPDATEで更新する場合もロックは不要みたいですね。
> 何も指定しないで下記の方法でテーブルをつくりました
> この場合は、MyISAMになるんですか?
そうです。
InnoDBを使うにはテーブル作成時に明示する必要があります。
http://dev.mysql.com/doc/refman/4.1/ja/using-inn …
> その場合、自動でテーブルロックしてくれるってことでしょうか?
してくれません。
自分で明示的にテーブルをロック / アンロックしてください。
http://dev.mysql.com/doc/refman/4.1/ja/lock-tabl …
あと、MyISAMはトランザクションセーフテーブルではないので、いわゆるトランザクションには使えないと思います。トランザクションの場合はCOMMITをするまで値が反映されてはいけませんので。
http://dev.mysql.com/doc/refman/4.1/ja/commit.html
http://dev.mysql.com/doc/refman/4.1/ja/table-typ …
> みなさんはphpやperlからmysqlを使う場合は、どのテーブルを使っていますか?InnoDBを使うのが一般的なのでしょうか?
MyISAMが一般的だと思いますが、適材適所ではないでしょうか。
例えばwordpress (http://ja.wordpress.org/) ではデフォルトのMyISAMを使っているようです。
自分が見た範囲では特にLOCK TABLESも登場しないように思います。
UPDATEは時々出てきますが、UPDATEによる更新はアトミックな処理になるようなので行の更新をする程度ならロックを取る必要はないのかもしれません。
http://dev.mysql.com/doc/refman/5.1/ja/ansi-diff …
かつてMySQLを選ぶ理由はトランザクションがない代わりに速いということだったので、色々と工夫をしてMyISAMを使うというのが普通なのかもしれません。しかしながら、MyISAMにはトランザクションの機能がないので、InnoDBを普通は選ぶべきという意見もあります。
Top 10 MySQL Mistakes Made By PHP Developers
http://www.sitepoint.com/mysql-mistakes-php-deve …
| 1. Using MyISAM rather than InnoDB
ただ、この記事へのコメントでDavidさん他多数がMyISAMよりInnoDBは非常に遅くて使いものにならないし、DBの設計を適切にすればMyISAMでも問題なく使えると主張しているので、InnoDBを使えば万事解決というわけでもないようです。
お答えいただきありがとうございます。
勉強になりました
同じ行への書き込みがないようにうまくやってみることにしました
MyISAMがmysqlの持ち味みたいなので
MyISAMでとりあえずやってみます
No.1
- 回答日時:
普通はInnoDBだと思います。
http://dev.mysql.com/doc/refman/5.1-olh/ja/innod …
質問しているのは行ロックをMySQLでデフォルトのMyISAMでとれるかだと思うのですが、MyISAMではテーブル単位のロックしかありません。
http://dev.mysql.com/doc/refman/5.1/ja/internal- …
何も指定しないで下記の方法でテーブルをつくりました
この場合は、MyISAMになるんですか?
その場合、自動でテーブルロックしてくれるってことでしょうか?
CREATE TABLE test (
id int(6),
name VARCHAR(255)
)
みなさんはphpやperlからmysqlを使う場合は、どのテーブルを使っていますか?InnoDBを使うのが一般的なのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SELECT時の行ロックの必要性に...
-
排他ロックしたレコードが、別...
-
accessのロック
-
SELECT文でのデッドロックに対...
-
AccessShareLock はどの程度気...
-
DB2でSelectした時(rollback,c...
-
「マスタ」と「テーブル」の違...
-
ACCESSのSQLで、NULLかNULLでな...
-
3つ以上のテーブルをUNIONする...
-
SI Object Browserのテーブルス...
-
ACCESS2007 フォーム 「バリア...
-
ビューで引数を使いたい
-
データの二重表示の原因
-
IDENTITY列
-
accessのエクスポートエラーに...
-
sqlserverで集計結果をUPDATEし...
-
Access VBA [リモートサーバー...
-
主キーの変更
-
既に使用されているので、使用...
-
大きなテーブルに対する問い合...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SELECT文でのデッドロックに対...
-
SQLServer Insertが遅い
-
SELECT時の行ロックの必要性に...
-
accessのロック
-
AccessShareLock はどの程度気...
-
Oracleの排他制御について教え...
-
更新ロックとデッドロック
-
INSERTにおいてロック処理は必要か
-
DB2のロック調査
-
排他ロックしたレコードが、別...
-
トランザクションとlast_insert_id
-
SELECT文でタイムアウト...
-
トランザクション中にSELECTし...
-
デッドロックが発生します。
-
ExcelからAccess2013DBを更新す...
-
UPDATE文で発生するデッドロッ...
-
トランザクション処理について
-
DB2でSelectした時(rollback,c...
-
パススルークエリでのロックに...
-
SELECT FOR UPDATE にトランザ...
おすすめ情報