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

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

2
製品属性リストのデザインパターン
ウェブサイトの製品データベースの更新に取り組んでいます。MySQLに組み込まれていますが、これは一般的なデータベース設計パターンの問題です。 Supertype / Subtypeパターンへの切り替えを計画しています。現在/以前のデータベースは、主に単一のタイプの製品に関するデータを含む単一のテーブルです。私たちは、異なる製品を含めるために製品提供を拡大することを検討しています。 この新しいドラフトデザインは次のようになります。 Product product_[type] product_attribute_[name] ---------------- ---------------- ---------------------------- part_number (PK) part_number (FK) attributeId (PK) UPC specific_attr1 (FK) attribute_name price specific_attr2 (FK) ... ... 製品の属性表について質問があります。ここでのアイデアは、色:赤、緑、青、または材料:プラスチック、木材、クロム、アルミニウムなどの特定の属性のリストを持つことができる製品です。 このリストはテーブルに格納され、その属性項目の主キー(PK)は特定の製品テーブルで外部キー(FK)として使用されます。 (Martin Fowler氏の著書「Patterns of Enterprise Application Architecture」では、これを「外部キーマッピング」と呼んでいます) これにより、Webサイトインターフェースは、指定された属性タイプの属性のリストをプルし、ドロップダウン選択メニューまたはその他のUI要素にそれを吐き出すことができます。このリストは、属性値の「許可された」リストと考えることができます。 特定の製品をプルするときに発生する結合の数が多すぎるように見えます。すべての製品属性テーブルを製品に結合して、その属性のフィールドを取得できるようにする必要があります。一般的に、そのフィールドは、単にその名前の文字列(varchar)にすぎません。 この設計パターンでは、多数のテーブルが作成されるだけでなく、属性ごとにテーブルが作成されます。これに対抗する1つのアイデアは、すべての製品属性に対して「グラブバッグ」テーブルのようなものを作成することです。このようなもの: product_attribute ---------------- attributeId (PK) name field_name このようにすると、テーブルは次のようになります。 1 red color 2 blue color …

4
何が良い/速いですか?MySqlまたはFileSystem?
人のディレクトリであるWebサイトを想像してみましょう。それぞれの人にプロフィール写真と伝記があるかもしれません。 私はSQLクエリの方が優れていることを認めますが、一般的には何がより速く、より少ない処理能力を使用します。 ファイルが存在するかどうかを確認してから開くには、または MySqlをチェックして、略歴が存在するかどうかを確認し、表示します。 上記の場合、ファイルシステムはmysqlデータベースをスモークします。 データベースを読み取り専用の区切りテキストファイルにするとどうなりますか? この場合、何が速くなりますか? txtファイルにレコードが多すぎる場合、MySqlを使用する方がよい特定のポイントはありますか?

3
データベースサイズがパフォーマンスに与える影響:理論と現実
データベースのサイズはパフォーマンスに大きな影響を与えてはならないということはたくさんあります。テーブルのインデックスがメモリに収まる限り、データベースのパフォーマンスは維持されます。 しかし、現実は何ですか?データベースアーキテクチャが最適でない場合、インデックスがメモリに収まらず、冗長データが大量に存在する可能性があります。冗長データを削除するだけで大​​幅なメリットが得られますか?データベース内のデータの60〜80%が削除される可能性があると推定しています。 データベースのサイズを減らし、RAMを増やしてインデックスがメモリに収まるようにすると、パフォーマンスが大幅に向上し、システムを再設計するための数か月の余裕ができると思います。 データベースのサイズに基づいてパフォーマンスに影響を与えるIO、断片化、作業データセットなどの他の要因もありませんか?

1
TRUNCATE TABLEに非常に長い時間がかかる原因は何ですか?
MySQL5.5をマスター/スレーブレプリケーション(1マスター、2スレーブ)で実行しています。 週に1回実行して特定のテーブルを切り捨てるプロセスがあります。テーブルは大きくなく、数千のレコードしかありません。 何らかの理由で、TRUNCATE TABLEコマンドの実行に非常に長い時間がかかります(マスターとスレーブの両方で)。実行には約400Kミリ秒かかります!! スレーブで実行すると、マスターから遅れます。終了後TRUNCATE TABLE、すべてが正常に戻ります。 スレーブの1つはTRUNCATE TABLE専用スレーブであり、そのスレーブから読み取るプロセスがダウンしていたため、実行中に読み取りを受信しなかったことがわかっています。また、このスレーブでは、実行に同じ時間がかかりました。 これがテーブル構造です:http : //pastebin.com/qEQB4juR TRUNCATE TABLEをどのように高速化できるかについての考えはありますか?

1
InnoDBテーブルのOPTIMIZE TABLEを安全に強制終了できますか?
kill 警告に関するMySQLのドキュメント: 警告 テーブルに対するREPAIR TABLEor OPTIMIZE TABLE操作を強制終了すると、MyISAMテーブルが破損し、使用できなくなります。そのようなテーブルの読み取りまたは書き込みは、再度(中断することなく)最適化または修復するまで失敗します。 MyISAMについてです。 OPTIMIZE TABLEInnoDBテーブルに対して実行されているプロセスを強制終了することも危険ですか?

2
テーブルフィールドの組み合わせを介して一意のキーを使用する方法
次のsqlfiddleを見てください:http ://sqlfiddle.com/#!2/dacb5/1 CREATE TABLE contacts ( id int auto_increment primary key, name varchar(20), network_id int, network_contact_id int ); INSERT INTO contacts (name, network_id, network_contact_id) VALUES ('John', 4, 10), ('Alex', 4, 11), ('Bob', 4, 12), ('Jeff', 4, 45), ('Bill', 7, 11), ('Walter', 7, 45), ('Jessie', 7, 360) ; 連絡先の基本的な表があります。フィールドは、他のテーブルにリンクID番号が含まれています。network_idnetwork_contact_id INSERT IGNOREこのテーブルに対してクエリを実行できるようにしたいのですが、network_idとの組み合わせを、network_contact_id照合する一意のキーとして使用したいと考えています。 …

2
mysqldumpから作成されたデータをロードするときに警告を表示するにはどうすればよいですか?
大規模な.sqlファイルに、大きな値を挿入する...値...ステートメントがあります。これらのステートメントの多くは、実行中に警告を生成しています。mysqlに警告を出力させるにはどうすればよいですか? control-Cを押すと、インポートが停止し、OSのコマンドラインに戻ります。 SQLの実行からの出力例は次のとおりです。 Query OK, 9827 rows affected, 5403 warnings (0.20 sec) Records: 9827 Duplicates: 0 Warnings: 5403 Query OK, 9859 rows affected, 5247 warnings (0.20 sec) Records: 9859 Duplicates: 0 Warnings: 5247

3
MySQLで西暦1000年より前の日付を処理する最良の方法は?
1000 ADより前に拡張するレコードのデータベースを作成していますが、MySQLのDateおよびDateTimeフィールドは1000から始まる日付のみをサポートしています。 bigint型を使用してUnixタイムスタンプを使用して1970年1月1日の前/後の秒数をカウントする方法、またはより広い日付範囲をサポートするデータベースソフトウェアに切り替える方法よりも便利な方法はありますか?

4
マスター上の大量のリレーログ
私には、今日のところ最近298のリレーbinファイルがあり、298日前まで遡るマスターがあります。 .cnfにリレーログ定義がありません そして mysql> show variables like '%relay%'; +---------------------------------+----------------+ | Variable_name | Value | +---------------------------------+----------------+ | innodb_overwrite_relay_log_info | OFF | | max_relay_log_size | 0 | | relay_log | | | relay_log_index | | | relay_log_info_file | relay-log.info | | relay_log_purge | ON | | relay_log_space_limit | 0 | +---------------------------------+----------------+ スレーブをリセットすると、それらはクリアされますが、その後、再生が開始されます。 …

2
MySQLスレーブが「mysql」データベースへの変更を複製しないようにするにはどうすればよいですか?
これで説明されているように、「mysql」データベースを複製しないようにスレーブを設定しています SHOW SLAVE STATUS\G; Slave_IO_State: Waiting for master to send event Master_Host: 127.0.0.1 Master_User: replication Master_Port: 3306 Connect_Retry: 60 Master_Log_File: master-bin.000001 Read_Master_Log_Pos: 1660 Relay_Log_File: mysql-relay-bin.000004 Relay_Log_Pos: 478 Relay_Master_Log_File: master-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: **Replicate_Ignore_DB: mysql** Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 1660 Relay_Log_Space: 633 Until_Condition: …

2
挿入時のMySqlギャップロックデッドロック
複数のソースから頻繁に挿入すると、テーブルのギャップロックからデッドロックが発生します。これが私のプロセスの概要です。 START TRANSACTION UPDATE vehicle_image SET active = 0 WHERE vehicleID = SOMEID AND active = 1 Loop: INSERT INTO vehicle_image (vehicleID, vehicleImageFilePath, vehicleImageSplashFilePath ,vehicleImageThumbnailFilePath, vehicleImageMiniFilePath, mainVehicleImage, active) VALUES (%s, %s, %s, %s, %s, %s, 1); END TRANSACTION の出力SHOW Create table vehicle_image;は次のとおりです。 CREATE TABLE `vehicle_image` ( `vehicleImageID` int(11) NOT NULL …

2
単一データベースのクエリログを有効にする
mysql 5.6サーバーに多くのデータベーススキーマがありますが、ここでの問題は、1つのスキーマのみのクエリをキャッチしたいということです。 スキーマの1つが高負荷でサーバーに影響を与えるため、サーバー全体のクエリログを有効にできません。 彼らのやり方は、私が単一のスキーマでのみクエリをログに記録できるツールです。 クエリログが有効な場合のトランザクション/秒への影響を示すベンチマークグラフを見つけました。

2
シングルユーザーから「REQUIRE SSL」を適切に削除するにはどうすればよいですか。
次のようにして、1人のユーザーにREQUIRE SSLを許可しました... mysql -u"${targetMySqlUser}" -p"${targetMySqlPass}" -e "GRANT USAGE ON dbname.* TO 'dbusername'@'%' REQUIRE SSL;" しかし、ユーザーからこのフラグをREMOVINGまたはREVOKINGして、取り消しを使用すると失敗します。私は構文と戦っているようです。権限全体を取り消さずに、「取り消し」コマンドでそれを削除する適切な方法はありますか? MySQL 5.5マニュアル、このサイト、およびインターウェブは、適切な反対方向を見つけるのにまだ役立ちませんでした。 このSQLステートメントは機能します。 UPDATE mysql.user SET ssl_type = '' WHERE ssl_type = 'any' ; FLUSH PRIVILEGES; しかし、私はどこにあると信じてGRANT REQUIRE SSL、私がしなければならないREVOKE REQUIRE SSL、ありませんか?

3
InnoDBテーブルの複合セカンダリインデックスの最後の列として主キーを持つことは何をしますか?
たとえば、1対Nの関係があるとし(person_id, pet_id)ます。pet_idが主キーであるテーブルがあります。 InnoDBセカンダリインデックスは基本的にBツリーであり、値は行の対応するプライマリキー値であると理解しています。 さて、一人の人が何千ものペットを持つことができ、私はしばしば人のペットをの順にしたいとしpet_idます。次に、セカンダリインデックスのレコードが並べ替えられている(person_id, pet_id)か、並べ替えられていないためのだけperson_idであるかが重要になります。後で推測。pet_idperson_id では、person_idが一意でない場合、レコードは、(person_id, pet_id)またはJUST によって物理的にソートされていpet_idますか? ありがとう

2
複数の行データを複数の列を持つ行に取得する方法
次のようなMySQLテーブルがあります。 User_Id course_name course_location course_id 1 course name 1 location 1 1 1 course name 2 location 2 2 1 course name 3 location 1 3 2 course name 2 location 1 2 2 course name 4 location 4 4 次のような結果をデータで取得するにはどうすればよいですか。 User_id course 1 course2 course3 course4 1 yes-location1 yes-location2 …
8 mysql  pivot 

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