問題タブ [myisam]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
4717 参照

mysql - MySQLでの挿入中にテーブルレベルのロックは何をロックしますか?

MySQLが挿入中にMyISAMテーブルに対してテーブルレベルのロックを実行することを何度も読みました。そのロックが挿入/削除コマンドのみをシリアル化するためのものであれば問題ありません。とにかく私のウェブサイトで挿入は非常にまれです。

しかし、そのロックは、挿入コマンドが終了するまで、すべてのSelectクエリもブロックしますか?

0 投票する
3 に答える
4329 参照

mysql - テーブルをMyISAMからInnoDBに変更すると、システムが遅くなります

こんにちは私はMysql5.0.xを使用しています

多くのテーブルをMyISAMからInnoDBに変更しました

MyISAMテーブルの場合、データベースのインストールには約1分かかりました。InnoDBの場合、同じデータベースのインストールには約15分かかります。

なぜInnoDBはそんなに時間がかかるのですか?

物事をスピードアップするために何ができますか?

データベースのインストールは次の手順を実行します

1)スキーマを削除します

2)スキーマを作成します

3)テーブルを作成する

4)ストアドプロシージャを作成します

5)デフォルトデータを挿入します

6)ストアドプロシージャを介してデータを挿入します

編集:

デフォルトデータの挿入にはほとんどの時間がかかります

0 投票する
1 に答える
710 参照

php - mysqli_use_result() と並行性

mysqli_use_resultのドキュメントによると

クライアント側で多くの処理が実行される場合は、mysqli_use_result() を使用しないでください。サーバーが拘束され、データがフェッチされるテーブルを他のスレッドが更新できなくなるためです。

これは myISAM テーブルのみに関連するものですか、それとも InnoDB にも関連するものですか?

0 投票する
1 に答える
1826 参照

mysql - ロックせずに MySQL / MyISAM テーブルにインデックスを適用する方法は?

非常に重要な列 (日付) にインデックスがない実稼働テーブルがある場合、ユーザーに影響を与えずにそのインデックスを適用する方法はありますか?

現在、テーブルは毎秒約 5 ~ 10 回の挿入を取得しているため、完全なテーブル ロックは無効になっています。これらの挿入を代替テーブル/データベースにリダイレクトすることも、一時的であっても拒否されます (企業政治上の理由により)。他の方法はありますか?

0 投票する
2 に答える
1855 参照

mysql - MySQL - 同時選択 - 1 つのクライアントが別のクライアントを待ちますか?

次のシナリオがあります。

約 400 万行の特定の MyISAM テーブルを持つデータベースがあります。私はストアド プロシージャ (MySQL バージョン 5.1) を使用し、特に 1 つを使用して、さまざまな基準でこれらの行を検索します。このテーブルにはいくつかのインデックスがあり、このストアド プロシージャを介したクエリは通常非常に高速です (1 秒未満)。基本的に、私は準備されたステートメントを使用し、この検索 sp でいくつかの動的 SQL を作成して実行します。準備済みステートメントを実行した後、「DEALLOCATE PREPARED stmt;」を実行します。

ほとんどのクエリは 1 秒未満で実行されます (私は LIMIT を使用して、常に 15 行のみを取得します)。ただし、まれに実行に時間がかかるクエリがいくつかあります (たとえば 2 ~ 3 秒)。検索テーブルをできる限り最適化しました。

私は Web アプリケーションを開発しました。私の開発マシンでは、高速なクエリを 1 秒以内に実行して結果を確認できます。

ただし、2 つのブラウザー インスタンスを開いて (開発マシンに対して) 同時検索を実行すると、1 つは実行時間の長いクエリで、もう 1 つはより高速なクエリで、結果が同時に返されます。高速なクエリは、低速なクエリが終了するのを待ってから結果を返します。つまり、両方のクエリに 2 ~ 3 秒かかります...

これには理由がありますか?MyISAM は互いに関係なく SELECTS を処理すると思っていたので、現在これは私が経験している動作ではありません...

前もって感謝します!ティム

0 投票する
5 に答える
7170 参照

mysql - MyISAM が破損する原因は何ですか?

MyISAM テーブルが破損する可能性があると聞いたことがあります。テーブルを破損する可能性が最も高いのはどのような操作で、その破損を安全に修正するにはどうすればよいでしょうか。

0 投票する
2 に答える
876 参照

mysql - php4/mysql4 から php5/mysql5 への移行: InnoDB に切り替えますか?

私はレガシー Web アプリケーション php4/mysql4 を持っています (MyISAM、db にはいくつかの cms、いくつかのユーザー データ、いくつかのカレンダー アプリケーションが含まれています)。今度は、php5/mysql5 を使用して新しいサーバーに移行します。

mysql データベースの移行中に InnoDB に変更する必要がありますか? - 予想される利点/欠点/リスクは? - MyISAM は非推奨ですか、それともいつかそうなる予定ですか? それとも安心して預けられますか?- MyISAM は壊れやすいと聞きましたが、InnoDB はどうですか? 耐クラッシュ性はありますか? - InnoDB は、バックアップと復元がより簡単または安全ですか?

変更した場合 (SQL クエリが壊れた場合)、またはロジックが壊れた場合 (ロック メカニズムが変更されたため)、コードが壊れることはありますか? もしそうなら、典型的なシナリオは何ですか?

(php の問題については、別の質問を作成しました: Migrating php4/mysql4 to php5/mysql5: expected php issues? )

0 投票する
1 に答える
385 参照

mysql - 2 つのプロセスでの MySQL MYISAM 同時実行の問題

私は単純なことを見落としている可能性がありますが、ここ数週間、ここで何がうまくいかないのかを理解しようとしてきたので、新鮮な目が必要です.

Paypal 支払い通知を処理する CGI アプリケーションがあります。誰かがサブスクライブすると、実際にサブスクリプション IPN とそれに続く支払い IPN を取得します。On はもう一方のすぐ後ろにあるので、2 つの CGI プロセスが起動されます。それぞれに個別のログを作成し、タイムスタンプは同じです (タイムスタンプの解像度 - 秒)。

CGii アプリケーションは、新しいサブスクライバーのユーザー アカウントを作成するように設計されており、支払い IPN が新しく作成されたアカウントに情報を追加します。十分に単純です。

問題は、2 番目の IPN がアカウントを見つけられないことです。これは、2 番目の IPN が探しに行った時点で作成が完了しているためだと思い、2 番目の IPN を 5 秒遅らせました。

タイムスタンプは、最初の IPN のアカウントを作成する関数が、2 番目の IPN が検索を開始する前に返されたことを示しています。つまり、最初の SELECT が発行される前に INSERT が完了しています。運がない。

キャッシュの問題かどうか疑問に思いました: http://dev.mysql.com/tech-resources/articles/mysql-query-cache.html しかし、そうは思いません。

ここでは TRANSACTIONS をまったく使用していませんが、2 番目の CGI アプリケーションが SELECT を発行する前に、最初の CGI アプリケーションのハンドルを解放していませんが、これは問題ではありません。おそらく単純なことを見落としている可能性がありますが、ここ数週間、ここで何がうまくいかないのかを理解しようとしており、新鮮な目が必要です。

Paypal 支払い通知を処理する CGI アプリケーションがあります。誰かがサブスクライブすると、実際にサブスクリプション IPN とそれに続く支払い IPN を取得します。On はもう一方のすぐ後ろにあるので、2 つの CGI プロセスが起動されます。それぞれに個別のログを作成し、タイムスタンプは同じです (タイムスタンプの解像度 - 秒)。

CGii アプリケーションは、新しいサブスクライバーのユーザー アカウントを作成するように設計されており、支払い IPN が新しく作成されたアカウントに情報を追加します。十分に単純です。

問題は、2 番目の IPN がアカウントを見つけられないことです。これは、2 番目の IPN が探しに行った時点で作成が完了しているためだと思い、2 番目の IPN を 5 秒遅らせました。

タイムスタンプは、最初の IPN のアカウントを作成する関数が、2 番目の IPN が検索を開始する前に返されたことを示しています。つまり、最初の SELECT が発行される前に INSERT が完了しています。運がない。

キャッシュの問題かどうか疑問に思いました: http://dev.mysql.com/tech-resources/articles/mysql-query-cache.html しかし、そうは思いません。

私は TRANSACTIONS を使用していませんが、INSERT の後に COMMIT を発行しようとはしていません。

ここで何が欠けていますか?

0 投票する
1 に答える
992 参照

mysql - JMeterを使用したWebアプリケーションでの同時実行性および/またはトランザクションの整合性のテスト

私はデータベース内の複数のスレッドを操作するのはかなり新しいです(私のキャリアのほとんどはフロントエンドに費やされてきました)。

今日は、テーブルロックを使用してトランザクションをエミュレートするISAMテーブルを使用してmysqlデータベースに値を格納するために作成した単純なphpアプリをテストしてみました。

手順についてのブログ投稿をここに書きました:

JMeterでのテスト

私の結果から、私の単純なphpアプリは、トランザクションの整合性を維持しているように見えます(csvファイルのデータがデータベースから再抽出したデータと同じであることがわかります)。

CSVファイル:

alのaltcsv blのaltcsv

JMeterテスト実行後の両方のユーザーのデータのクエリ:

alt alt

トランザクションデータの整合性は損なわれていないという私の仮定は正しいですか?

同時実行性をどのようにテストしますか?

0 投票する
6 に答える
6001 参照

sql - MySQL MyISAMテーブルのパフォーマンス...痛々しいほど、痛々しいほど遅い

次のように要約できるテーブル構造があります。

3600行あります

ページグループを参照します。10000行あります。ページグループごとに1〜700行の範囲で指定できます。データ列のタイプはmediumtextで、列には1行あたり100k〜200kバイトのデータが含まれます

参照ページ; 約300,000行あります。1ページあたり約1〜50行にすることができます

上記の構造は非常に単純です。問題は、インデックスを作成する必要のあるすべての列にインデックスを付けたにもかかわらず、userdataからページグループへの結合が非常に遅くなることです。このような結合(userdatainner_joinページinner_joinページグループ)のクエリを実行するために必要な時間は3分を超えています。データ列をまったく選択していないことを考えると、これは非常に遅いです。時間がかかりすぎるクエリの例:

なぜそんなに時間がかかるのか、そしてそれを速くするために何ができるのかを説明するのを手伝ってください。

編集#1

次のジブリッシュのリターンを説明します。

編集#2

この話の教訓

このようなパフォーマンスの問題が発生した場合は、中/長のテキスト列を別のテーブルに保持してください。