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

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

2
存在する場合、DROPプロシージャがmysqldumpに含まれていない
次のコマンドを使用してのみ、ストアドプロシージャをダンプしています。 mysqldump --routines --no-create-info --no-data --no-create-db --skip-opt databasename -u username -p > outputfile.sql ただし、結果のダンプファイルには、各プロシージャ宣言の前にDROP PROCEDURE IF EXISTSは含まれていません。 ダンプクエリをダンプに追加するにはどうすればよいですか? ありがとうございました。

9
オンラインゲーム(数千人のプレイヤー)に十分な速度のDBMSはどれですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 3年前休業。 私は現在、MMORPGゲームを作成しています。これは、同時に数千人のプレイヤーがオンラインでいる可能性があります(おそらくそうではありません。希望的な考えだけです)。最初にMySQLを使用したかったのですが、この規模では十分に高速ではないと聞きました。 どのDBMSが十分に高速ですか?SQL Serverはどの程度似ていますか(私は学校でSQL Serverを学びました)。

3
MySQLトリガーまたはトランザクションを使用していますか?
MySQLトリガーまたはWebサイトでのトランザクションの使用について、ご意見をお聞かせください。 実際、私はpayment-で履歴テーブルを持っていますUserId | OperationId | Comment | Credits | Sign (debit or credit)。したがって、各支払い操作がこのテーブルに挿入されます。 ただし、ユーザーがアクションを実行するたびに、ユーザーの合計クレジット額を計算するのに時間がかかります。そのため、各ユーザーの合計クレジット額をユーザーprofileテーブルに保持することをお勧めします。 ここに問題があります。profileテーブルの合計クレジット額がpayment履歴テーブルの操作と常に同期していることを確認するにはどうすればよいですか? 私は2つの方法を使用すると思いました: MySQLトリガーまたは ソースコードでコーディングされたトランザクション どちらがより信頼できますか?大規模なデータベース(100.000ユーザー以上)がある場合はどうなりますか? これを行うための提案はありますか? BD MySQLエンジンはInnoDBです。

1
MySQLはまだこの方法でインデックスを処理しますか?
MySQLで重複したインデックスを削除するのにはかなり時間がかかりました。そのため、私が待っていたときにそれについて検索し、MySQLがどのように処理し、インデックスを作成するかについて話している2006年のこの投稿を見つけました。ADDDROP テーブルTが4つのインデックス(ndx1、ndx2、ndx3、ndx4)を持つMySQLテーブルであり、「テーブルTをドロップインデックスndx3に変更」したい場合。ここでは、内部で何が起こるかを正確に示します。 1)MySQLはT.MYDを一時テーブル、つまりS.MYDとゼロバイトのS.MYIにコピーします。2)MySQLは「テーブルSを変更し、インデックスndx1(...)を追加します。3)MySQLは「テーブルSを変更し、インデックスndx2(...); 4)MySQLはテーブルSを変更し、インデックスndx4(...)を追加します。5)MySQLはT.MYDを削除してT.MYIを削除します6)MySQLはS.MYDをT.MYDに名前変更し、S.MYIをT.MYIに名前変更します これはまだ本当ですか?彼のアドバイスはまだ有効ですか? 同じMyISAMテーブルTに4つのインデックス(ndx1、ndx2、ndx3、ndx4)があり、「テーブルTドロップインデックスndx3を変更する」とします。代わりにこれを試してください: 1)TのようなテーブルT1を作成します。これにより、ndx1、ndx2、ndx3、およびndx4のインデックスを持つ空のテーブルT1が作成されます。2)テーブルT1ドロップインデックスndx3を変更します。これにより、空であるT1のインデックスndx3が削除されます。3)T1に挿入* Tから選択します。これにより、テーブルTにデータが読み込まれ、T1の3つすべてのインデックスが1つのパスで読み込まれます。4)ドロップテーブルテーブルT; 5)テーブルT1の名前をTに変更します。 大きなテーブルでのインデックスの追加と削除をどのように処理しますか?

2
データベース編集時のMySQLからのメール警告
ルートまたは他の誰かが特定のデータベースを編集または更新したときに、MySQLからメールを取得するにはどうすればよいですか?メールの送信をトリガーし、編集内容をログに記録する必要があります。 トリガーを試しましたが機能しません。 サーバー仕様: Ubuntu 10.04 64ビット MySQLサーバー5.1.41 私が試したスクリプト #!/bin/sh tail -f /var/log/mysql/mysql.log | egrep 'INSERT|UPDATE|DELETE|root' | mail -s 'backend update' sushanth@example.com しかし、それは機能していません
8 mysql 

1
MySQLの高可用性、フェイルオーバー、およびレイテンシを伴うレプリケーション
MySQLで実行される新しいCMS(Drupal 6.x)の実装を進めています。プライマリとセカンダリの2つのデータセンターがあり、それらの間のレイテンシは既知です。MySQLのどのバージョンを実行するか不明です。コミュニティまたはエンタープライズのいずれかですが、それは未定です。InnoDBエンジンを実行するように見えます。OSはRedHat EL 5.5になります。セカンダリサーバーはパッシブまたはホットスタンバイですが、プライマリサーバーはアクティブになります。 MySQLのレプリケーション、高可用性、自動フェイルオーバーを2つのデータセンターに実装したいと考えています。 セカンダリサーバーへのフェールオーバー後、プライマリサーバーにフェールバックするとき、プライマリサーバーからコンテンツを引き続き提供できるように、セカンダリDBからプライマリDBにデータを迅速かつ完全に同期させたいと考えています。 これらの問題を解決/解決するために使用できるテクノロジー/ツール/ベストプラクティスを知ることに興味があります。また、落とし穴やああは瞬間も同様に高く評価されます。MySQLのレプリケーション、クラスタリング、TungstenやDolphinicsなどのサードパーティツールについては読んだことがありますが、どのようなアクションが最適かわかりません。 お時間をいただきありがとうございます! KM

1
リレーションは、大きくて非効率的なテーブルよりも遅いですか?
私の仕事では、「コンピューターの処理能力のために」最初の正規形(列全体でグループを繰り返す、空/ null値を使用)に何度も違反するように依頼されました。簡単に言えば、「学生」テーブルには、私の提案ではなく、少なくとも8つの空のフィールド(たとえば、telephones:telephone1、telephone2、telephone3 ...)が必要です。電話番号(およびその他のメタデータ)を保持する「telephone」テーブル外部キーは学生ID番号です。私の上司は、リレーションを使用する代わりに、「CPUサイクルが少なく、それがWebプラットフォームで問題になる」ため、それらをそのように保存する方が良いと述べています。最悪の場合、それはごくわずかです。 その例では、リレーションの使用(テーブルが中規模のWebアプリケーションの多くのレコードで満たされていると想定)は、そのようなテーブルスキーマを使用するよりも著しく遅いですか?

4
MySQLで複雑なGROUP BYを実行するにはどうすればよいですか?
他のテーブルへのいくつかのキーを含むテーブルがあります(各キーは複数の列で構成されています)。等しいキーを持つ行をグループ化したいのですが、それらすべてをグループ化したくありません。それは単純なGROUP BYキーではなく、たとえば10のグループを作成できるようにしたいのです。したがって、特定のキーが50回表示された場合、このグループ化(5グループの10)を実行すると5つの結果が得られます。また、このグループ化をキー内でランダムに発生させます。 私はこれを行う直接的な方法を知りませんでした、そして私が思いついたラウンドアバウト方式は私が思っているように機能していません。私が思いついたラウンドアバウト交差点の解決策は、値がそのキーiのith出現を(ただしランダムな順序で)表すような整数である各キーの新しい列を作成することでした。次に、整数の除算を行って、キー内のすべてのn(たとえば10)行が同じ値になるようにし、GROUP BYその値に対してa を行うことができます。 今説明したことを達成するためのより直接的な方法はありますか?これはかなり厄介で、新しいインデックス列を作成するときに問題が発生しました(この質問で説明したように)。 編集:まず、これはMySQL用であることに注意してください。目標が明確でない場合に備えて、例を追加します。MySQLのドキュメントはほとんどそこに到達する方法を示しています: CREATE TABLE animals ( grp ENUM('fish','mammal','bird') NOT NULL, id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (grp,id) ) ENGINE=MyISAM; INSERT INTO animals (grp,name) VALUES ('mammal','dog'),('mammal','cat'), ('bird','penguin'),('fish','lax'),('mammal','whale'), ('bird','ostrich'); SELECT * FROM animals ORDER BY grp,id; これは、私が望むものではありませんが、近くなるテーブルを作成します: +--------+----+---------+ | grp | id …

2
phpMyAdminが読み込まれるたびにInnoDBでCOUNT(*)
innodbが遅いのは既知の問題です SELECT count(*) FROM Table したがって、私はそれを避けました。しかし、phpmyadminにログインするたびにcount(*)、19k行のinnodbテーブルが自動的に実行され、実行に最大1分かかることがあります。それでもcount(*)、400万行を含む他のinnodbテーブルでは、このような処理は開始されません。 phpmyadminの別の手掛かりとして、[レコード]列の下にある、19k行のテーブルのレコード数は正確な値を示していますが、400万行のテーブルはおよその値を示しています。 私はinnodbテーブルが行数の見積もりを与えることを理解しています。しかし、この例では1万9千行の小さなテーブルの場合、phpmyadmin count(*)は単に見積もりを行うのではなく、を行うことにしました。 質問は、phpmyadminが私のinnodbテーブルでこのようなカウントを実行しないようにする方法はありますか?phpmyadmin画面を更新するたびに、高額な行数を計算する代わりに、見積もりを出すだけでかまいません。
8 mysql  innodb 

3
MySQLはWindows Server 2008でバックアップをスケジュールするためにどのようなメカニズムを使用しますか?
Windows Server 2008で実行されているMySQLサーバー(v5.1.45-community)でデータベースバックアップをスケジュールする場合、バックアップの実行をトリガーするためにどのようなメカニズムが使用されますか?Windowsタスクスケジューラを使用していると思いますが、これらのバックアップの明確なタスクはありません。SQL Serverは別のエージェントサービスを使用します。MySQLに同様のものはありますか? 追加情報:バックアップはMySQL Administratorでセットアップされました。バックアップのスケジュール方法は知っていますが、実行されていません。トラブルシューティングを開始する場所についての洞察を探しています。
8 mysql  backup  windows 

2
MySQLユーザーがシステムに存在するかどうかを確認するにはどうすればよいですか?
show grants for 'username'@'localhost''ユーザー名が少し異なると思うので、ユーザーを見つけることができません。そのため、すべてのデータベースユーザーのワイルドカード検索を実行したいと考えています。これどうやってするの? 更新:明確にするため、多分私は100%明確にしていないと思います。ワイルドカードによって、ユーザー名の一部のみ、または名前がパターンに一致するすべてのユーザーを検索できるようにしたいと思いました。5k以上のユーザーがいるシステムでこれが必要だったので、パフォーマンスの低下はそれほど大きくはありませんが、一度に1つずつ確認したくありません。
8 mysql 

2
大きなInnoDBテーブルにPRIMARY KEYを追加する良い方法は何ですか?
MySQL 5.5でInnoDBストレージエンジンを使用して約3,000万行のテーブルがあります。このテーブルには、約300万行の別のテーブルにリンクする外部キーがあります。 より大きなテーブルに主キーを追加したいのですが、これをどのように行うのが最善かわかりません。これに使用できる既存の列(または列のセット)がないので、どうすればよいですか? 内部InnoDBレコードIDへの参照をいくつか見ましたが、これがアクセス可能かどうかはわかりません。 それ以外の場合は、おそらくデータをダンプしてリロードし、IDを手動で追加する必要があります。 ありがとう。

3
max_allowed_pa​​cketを変更しても「Packet Too Large」エラーが発生する
mysqldumpを使用して、バックアップ用のフラットファイルを作成します。このファイルを使用して、代替サーバーでデータベースを再作成しました。コマンドラインでsshを使用してインポートプロセスを実行したところ、複数のPacket too Largeエラーが発生しました。 より大きなmax_allowed_pa​​cket(つまり、1000M)でmysqlを再起動しても、エラーが発生しました。インポートファイルでmax_allowed_pa​​cketを設定しようとしても、エラーが発生しました。 max_allowed_pa​​cketが設定されていることを確認する方法や、この問題を引き起こさないファイルを作成するmysqldumpを使用する方法はありますか? 参考のために: 非圧縮のmysqldumpファイルは〜2GB データベースタイプはINNODBです

5
MySQL:プレフィックスで始まるDROP TABLE
例:プレフィックス「dp_」で始まる30を超えるテーブルと、「ex_」で始まる約12のテーブルがあります。 質問:「dp_」で始まるすべてのテーブルを1つのクエリで削除するにはどうすればよいですか?
8 mysql 

3
ストアドプロシージャを使用してデータを処理することと、検索後に関数にデータを供給することとでは、パフォーマンスが向上しますか?
タイトルはそれを要約します。私はPHPにかなり余裕があり、MySQLから取得した値を使用して必要なことを実行できますが、知識を広げるために、おそらくそれがロングラン。それらは同等ですか(最終的にはほぼ同じ量の処理が行われるため)、または一方が他方よりも明らかに有利な場合がありますか?

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