タグ付けされた質問 「mysql」

MySQLのすべてのバージョン(Microsoft SQL Serverではありません)。質問に関連する場合は、mysql-5.7のようなバージョン固有のタグも追加してください。

2
1つのクエリで異なる値を持つ複数の行を更新する
異なる値を持つ複数の行を更新する方法を理解しようとしていますが、取得できません。解決策はどこにでもありますが、私には理解するのが難しいようです。 たとえば、1つのクエリへの2つの更新: UPDATE mytable SET fruit='orange', drink='water', food='pizza' WHERE id=1; UPDATE mytable SET fruit='strawberry', drink='wine', food='fish' WHERE id=2; CASE WHEN .. THEN ... ENDの動作と使用方法がわかりません。 誰かがこれについて私を助けることができるのだろうか。
12 mysql  update 

2
auto_incrementキーはINSERTでどのように処理されますか(SELECT * FROM…)
私が持っているtable1とtable2MySQLのインチ どちらにも主auto_incrementキーがありますid。 テーブルスキーマが一致していINSERT INTO table1 (SELECT * FROM table2)て、に挿入された新しい行に関してどうなりtable1ますか?id行の値table1が同じである場合、古い値を保持して競合を生成しidますか?auto_incrementによって新しい値が生成されますか?ストレージエンジンまたはロックに依存しますか?

2
character_set_clientの値をutf8mb4に設定します
私のDBをこのガイドにutf8mb4従うように変換しようとしています。私は設定しました: [client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 [mysqld] init-connect='SET NAMES utf8mb4' collation_server=utf8mb4_unicode_ci character_set_server=utf8mb4 skip-character-set-client-handshake しかし、の値character_set_clientとcharacter_set_results、まだはutf8mb4に変更されません。 mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%'; +--------------------------+--------------------+ | Variable_name | Value | +--------------------------+--------------------+ | character_set_client | utf8 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary …
12 mysql  collation  utf-8 

2
MySQLに楽観的ロックを正しく実装する方法
MySQLで楽観的ロックを正しく実装するにはどうすればよいですか? 私たちのチームは、以下の#4を実行する必要があると推定しました。そうしないと、別のスレッドが同じバージョンのレコードを更新できるリスクがありますが、これが最善の方法であることを検証したいと考えています。 楽観的ロックを使用するテーブルにバージョンフィールドを作成します(例:列名= "version") 選択時には、必ずバージョン列を含めてバージョンをメモしてください その後のレコードの更新時に、更新ステートメントは「where version = X」を発行する必要があります。ここで、Xは#2で受け取ったバージョンであり、その更新ステートメント中のバージョンフィールドをX + 1に設定します。 実行しSELECT FOR UPDATE、我々は、更新しようとしているレコードに変更を加えることができる人シリアライズように、我々は、更新しようとしている記録に。 明確にするために、同じバージョンのレコードを取得する同じタイムウィンドウで同じレコードを選択する2つのスレッドが、レコードを同時に更新しようとした場合に、お互いに上書きされないようにします。#4を行わない限り、両方のスレッドが同時にそれぞれのトランザクションに入る場合(ただし、まだ更新を発行していない場合)、更新に行くときに、UPDATEを使用する2番目のスレッドが可能性があると考えています...バージョン= Xは古いデータで動作します。 バージョンフィールド/楽観的ロックを使用している場合でも、更新時にこの悲観的ロックを実行する必要があると私たちは考えていますか?
12 mysql  locking 

3
MySQLレプリケーション-スレーブは継続的にマスターに遅れています
MySQL-5.1.50をマスター/スレーブレプリケーション設定で使用しています。 ほとんどの場合、スレーブはマスターより遅れています。 を実行してもshow processlist;、時間がかかるクエリはありません。私も有効にしslow_logました。ただし、実行速度の遅いクエリは検出されません。 スレーブはレプリケーションがマスターより数秒遅れていることを警告し続けています。時々、遅延時間が増加します。 問題の原因を診断するにはどうすればよいですか? この問題が過去20日間続いているため、緊急のサポートが必要です。

2
1対1の関係は正規化されていますか?
レコードの統計データの大規模なセットがあると考えてください。例:20〜30 INTカラム。セット全体が1つのレコードに属しているため、セット全体を1つのテーブルに保持するか、1対1の関係で接続された別のテーブルを作成する方が良いでしょうか。 前者の利点はJOIN、対応するレコードのすべての統計データを回避して迅速にアクセスできることです。 後者の利点は、カラムを整頓することです。最初の列は読み取り中心で、2番目の列は書き込み中心です。もちろん、行レベルのブロッキングでInnoDBを使用しているので、パフォーマンスに大きな影響はないと思います。 一般に、1つのレコードに対して異なるデータセットを分離することが実用的かどうか知りたいですか?


5
MySQL-InnoDBのALTER TABLEへの最速の方法
変更したいInnoDBテーブルがあります。テーブルには約8,000万行あり、いくつかのインデックスを終了します。 列の1つの名前を変更し、さらにいくつかのインデックスを追加したいと思います。 それを行う最速の方法は何ですか? 「プレーン」alter table、最速のソリューションですか? この時点で、私が気にしているのは速度です:)

2
1つのクエリでMySQL ENUMカラムの値の名前を変更できますか?
を含むデータベーステーブルがあるとしENUM('value_one','value_two')ます。それをに変更したいENUM('First value','Second value')。私は現在次のようにしています: ALTER TABLE `table` MODIFY `column` ENUM('value_one','value_two','First value','Second value'); UPDATE `table` SET `column`='First Value' WHERE `column`='value_one'; UPDATE `table` SET `column`='Second Value' WHERE `column`='value_two'; ALTER TABLE `table` MODIFY `column` ENUM('First value','Second value'); これを行うためのより効率的な方法はありますか?EGはこれを単一の ALTER TABLEステートメントで達成する方法 ですか?

5
一連の値から、テーブルの列に格納されていない値を見つけるにはどうすればよいですか?
数十万の整数を潜在的に格納するテーブルがあります desc id_key_table; +----------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------------+--------------+------+-----+---------+-------+ | id_key | int(16) | NO | PRI | NULL | | +----------------+--------------+------+-----+---------+-------+ プログラムから、私は整数の大きなセットを持っています。上記のid_key列にない整数を確認したいのですが。 これまでのところ、私は次のアプローチを考え出しました: 1)各整数を反復処理し、以下を実行します。 select count(*) count from id_key_table where id_key = :id_key countが0の場合、id_keyはテーブルにありません。 これは恐ろしくて恐ろしい方法のようです。 2)一時テーブルを作成し、各値を一時テーブルに挿入して、2つのテーブルでJOINを実行します。 create temporary table id_key_table_temp …
12 mysql 

1
デッドロックレポートの「ロックは待機しますがギャップ待機はしません」の意味
locks rec but not gap waitingTRANSACTION(1)の意味について、どちらが正しいですか? 既にギャップロックが付与されており、クラスター化インデックスXロックを待機していますか? クラスター化されたインデックスXロックを既に付与し、ギャップロックを待機していますか? Transaction(1)には31行あります。それらの行の意味は何ですか?これはギャップロックを表しますか? 0: len 4; hex 800c20d6; asc ;; .... 29: SQL NULL; 30: SQL NULL; 最新の検出されたデッドロックレポート LATEST DETECTED DEADLOCK ------------------------ 2015-09-25 15:27:24 1b8084000 *** (1) TRANSACTION: TRANSACTION 5226928, ACTIVE 0 sec fetching rows mysql tables in use 1, locked 1 LOCK WAIT …
12 mysql  deadlock 

1
最後のいくつかのinnodbデッドロックを表示する
mysql / innodbで最新のデッドロックを表示できることがわかりましたが、過去のデッドロックを表示する方法はありますか?デッドロックには2つの問題があります。1つは重要で、もう1つは重要ではありません。重要性の低いデッドロックは1日に数回発生するため、「最新の」デッドロックになります。

1
MySQLのFULLTEXTインデックスでLIKEがMATCH…AGAINSTより4倍以上速いのはなぜですか?
私はこれを取得していません。 これらのインデックスを持つテーブルがあります PRIMARY post_id INDEX topic_id FULLTEXT post_text テーブルには(のみ)346 000行があります。2つのクエリを実行しようとしています。 SELECT post_id FROM phpbb_posts WHERE topic_id = 144017 AND post_id != 155352 AND MATCH(post_text) AGAINST('http://rapidshare.com/files/5494794/photo.rar') 4.05秒かかります SELECT post_id FROM phpbb_posts WHERE topic_id=144017 AND post_id != 155352 AND post_text LIKE ('%http://rapidshare.com/files/5494794/photo.rar%') 0.027秒かかります。 EXPLAINは、唯一の違いがpossible_keysにあることを示しています(fulltextpost_textが含まれていますが、含まれてLIKEいません) それは本当に奇妙です。 この背後にあるものは何ですか?バックグラウンドで何が起こっていますか?LIKEインデックスを使用していない場合はどのように高速になり、インデックスを使用している場合はFULLTEXTが非常に遅くなりますか? アップデート1: 実際には約0.5秒かかりますが、テーブルがロックされた可能性がありますが、プロファイリングをオンにすると、FULLTEXT INITIALIZATIONに0.2秒かかったことが示されます。調子はどう? 1 LIKE秒あたり10倍、フルテキストは2倍でテーブルをクエリできます UPDATE2: …

1
mysqlのスロークエリログ内の「ロック時間」をどのように解釈すればよいですか?
MySQLのスロークエリログに表示されるクエリのロック時間を最適に解釈する方法を理解しようとしています。 たとえば、UPDATEクエリのロック時間が10秒の場合です。更新クエリがロックを取得してからの合計時間だと思います。以前の選択クエリが完了するのを待っているがUPDATEアクション自体を実行していない場合でも、UPDATEクエリの後に並んでいるすべてのSELECTクエリをロックしているので、時計が動いているはずです。 そして、SELECTクエリのロックについてはどうでしょう。一部の選択クエリにロック時間があるのはなぜですか?UPDATEクエリがフォローアップしているため、テーブルをロックしています。
12 mysql  locking 

1
MySQLの複合主キーのINDEXはどうですか?
2つ以上の列の複合主キーを作成する場合PRIMARY KEY(col1, col2, col3)。システムはINDEX各列を個別に使用しますか? 私はこの質問をしていた理由は、私たちが使用している場合ということですUNIQUE INDEX (col1, col2, col3)、それはとして機能するINDEXだけで、最初の列のために、私たちは、追加作成する必要がありINDEX、他の列に対して複数可。それが複合主キーにも当てはまるかどうかを知りたいです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.