問題タブ [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.
mysql - InnoDBはウェブホストではサポートされていません。今何?
私はラップトップで小さなWAMPWebアプリケーションを開発していました。そこでは、mySQLのインスタンスが実行されており、DBエンジンにInnoDBを選択しました。数週間の開発の後、私はそれを一般に公開したいと思いました、そして私のウェブホストによって提供されるデータベースサーバーがInnoDBをサポートせず、MyISAMだけをサポートすることを知りました。
ラップトップのinnoDBスキーマから生成されたcreate-and-populateスクリプトをライブデータベースに対して実行すると、個々のTABLESを作成できますが、VIEWの作成で問題が発生します。MyISAMではビューがサポートされていませんか?私は外部キーがそうではないことを知っています。それが、私がInnoDBを選択した理由です...私のinnoDBスキーマ設計をmyISAMで機能させるチャンスは何ですか?
スキーマ全体を1つのストレージエンジンから別のストレージエンジンに変換する簡単な方法はありますか?innoDBをサポートするmysqldbを提供する別のWebホストを探す必要がありますか?
mysql - このクエリが遅いのはなぜですか? ここで InnoDB ではなく MyISAM を使用する必要がありますか?
スロークエリログでこれらを 1 時間に約 5 回取得しています。
record_lock テーブルは現在 InnoDB を使用しており、現在 12 未満のレコードが含まれています。
私たちのシステムには数千人のアクティブユーザーがいます。彼らがレコードを編集するたびに、このテーブルに挿入します。そして、システム内のあらゆるページがロードされるたびに、1) テーブルから SELECT を実行して、現在のユーザーのロックがあるかどうかを確認し、2) ユーザーのレコードがある場合は、そのテーブルに対して DELETE クエリを実行します。 WHERE 句のテーブルの主キー。
テーブルのスキーマは次のとおりです。
sql - IN 演算子を使用した MySQL クエリの最適化
製品があるかなり大きなテーブルを持つMySQLデータベースがあります。それらのそれぞれには、この製品に属するカテゴリ ID がある独自の id フィールドと categoryId フィールドがあります。次のような特定のカテゴリから製品を引き出すクエリがあります。
もちろん、WHERE 句と ORDER BY ソートが来ますが、このことではありません。これらの製品が 250,000 で、1 日あたりの訪問数が 100,000 を超えるとしましょう。このような条件下で、slow_log テーブルには、生成時間が長いこれらのクエリの重みが登録されています。
与えられた問題を最適化する方法はありますか?
テーブル エンジンは MyISAM です。
java - InnoDB と MyISAM の違いは何ですか
InnoDB と MyISAM の違いは何ですか。私はどちらに行くことができますか?一方が提供し、他方が提供しない分野はありますか? 両方のタイプのいずれかに技術的な制限はありますか? プロジェクトに適したタイプを選択するのを手伝ってください。
sql - SQL 内部結合: DB スタック
数日前にこの質問を投稿しましたが、私が何を望んでいるかを正確に説明していませんでした。私は、よりよく定式化された質問をもう一度します。私の問題を明確にするために、いくつかの新しい情報を追加しました。
MyISAM テーブルを含む MySQL DB を取得しました。関連する 2 つのテーブルは次のとおりです。
(テーブルの詳細については、製品のスクリーンショット (スクリーンショット) および製品のスクリーンショット (スクリーンショット) を参照してください)
今私が欲しいのはこれです:-manufacturers_id = 1の製品を注文したすべての注文を取得します。そして、この注文の製品の製品名(manufacturers_id = 1)。注文ごとにグループ化されます。
これまでに行ったことは次のとおりです。
p.orders_id > 10000 は、少数の order_id のみを取得するためのテスト用です。しかし、このクエリが機能する場合でも、実行に時間がかかります。SQL サーバーが 2 回スタックしました。間違いはどこですか?
mysql - 外部キー vs パーティショニング
外部キーはパーティション化された mySQL データベースでは現時点ではサポートされていないため、テーブルごとに約 1 ~ 400 000 行を処理する読み取り負荷の高いアプリケーションについて、賛否両論を聞きたいと思います。残念ながら、私はこの分野で自分で結論を出すのに十分な経験がありません...
どうもありがとう!
参考文献:
mysql - 複数の選択クエリからのmysql挿入データ
私が取り組んでいることと、それを改善する必要があること:
これはメールを受け取るだけです。これは素晴らしいことですが、別の列にインポートする必要がある form_key のいくつかの異なる値があるため、十分ではありません。foreach ループと更新を使用して php 経由で実行できることを認識していますただし、これは純粋に mysql で行う必要があります。
では、どのようにすればよいでしょうか: insert form_data(id,data,email,name,surname,etc) Select [..],Select [..]....
データは、実際のデータが何であるかを示す別のセルを使用して、可能な限り最もばかげた方法で 1 つのセルに 1 つのテーブルに格納されます: http://drp.ly/Jhx3J (スクリーンショット)
助けてください
mysql - MyISAM テーブルを使用した Rails 単体テスト
いくつかのテーブルで MyISAM を使用する必要があるアプリケーションがありますが、残りは従来の InnoDB タイプです。アプリケーション自体は、これらのレコードに適用されるトランザクションには関係ありませんが、パフォーマンスが懸念されます。
ただし、Rails テスト環境では、使用されるエンジンがトランザクション対応であることを想定しているため、テスト データベースが schema.rb から生成されると、同じエンジンでインポートされます。この動作を簡単な方法でオーバーライドすることは可能ですか?
これをtest_helper.rbに追加することで、テーブルが正しいタイプであることを確認するために、私はひどいハックに頼りました:
MyISAM に裏打ちされたモデルをテスト可能にするより良い方法はありますか?
mysql - innoDB テーブルの MySQL 全文検索の回避策
MySQL をバックエンド データベースとして使用する内部 Web アプリケーションを設計しています。データの整合性は非常に重要であるため、innoDB
エンジンを外部キー制約機能に使用しています。
1 つのタイプのレコードの全文検索を実行したいのですが、それは innoDB テーブルではネイティブにサポートされていません。MyISAM
外部キーがサポートされていないことと、ロックが行ごとではなくテーブルごとに行われるため、テーブルに移動するつもりはありません。
MyISAM エンジンを使用して検索する必要があるレコードのミラー テーブルを作成し、それを全文検索に使用するのは悪い習慣でしょうか? このようにして、データのコピーを検索しているだけで、そのデータに何かが起こったとしても、いつでも再作成できるため、それほど大きな問題ではありません。
それとも、これは避けるべき厄介な方法ですか?
ありがとう。
mysql - 大きな列に関するMysqlデータベースの質問
100.000 行のテーブルがあり、すぐに 2 倍になります。データベースのサイズは現在 5 GB で、そのほとんどは特定の列 (PDF ファイルのテキスト列) に割り当てられます。数か月後には 20 ~ 30 GB または 50 GB のデータベースになると予想され、このシステムは頻繁に使用されます。
このセットアップに関していくつか質問があります
1-) ユーザー テーブルなどを含むすべてのテーブルで innodb を使用しています。PDF ファイルのテキスト バージョンを保存するこのテーブルで myisam を使用する方がよいでしょうか? (メモリ使用量/パフォーマンスの観点から)
2-) 検索には Sphinx を使用しますが、強調表示するにはデータを取得する必要があります。強調表示は sphinx API を介して行われますが、再度 Sphinx に送信するには 10 行を取得する必要があります。この 10 行には 50 MB のメモリが割り当てられる可能性があり、これは非常に大きいです。したがって、これらの PDF ファイルをデータベース内の 5 ページのチャンクに分割することを計画しているため、これらの 100.000 行は約 300 万から 400 万行になり、数か月後には 300.000 から 350.000 行ではなく、1000 万になります。これらの PDF ファイルのテキスト バージョンを格納する行。ただし、取得するページ数は少なくなるため、強調表示のために Sphinx に送信するために 400 ページを取得する代わりに、5 ページを取得することができ、パフォーマンスに大きな影響を与えます。現在、用語を検索して 100 ページを超える PDF ファイルを取得する場合、実行時間は 0.3 ~ 0.35 秒ですが、
これは良いトレードオフだと思いますか? 10 万行から 20 万行ではなく、数百万行になりますが、これによりメモリが節約され、パフォーマンスが向上します。この問題を解決するための良いアプローチはありますか?また、この問題を克服する方法について何かアイデアはありますか?
データのテキスト バージョンは、インデックス付けと強調表示にのみ使用されます。そのため、私たちは非常に柔軟です。
編集: PDF ファイルをクラウドに保存しますが、検索の強調表示のために、PDF ファイルのテキスト バージョンを取得して Sphinx に渡す必要があります。Sphinx は、強調表示された 256 文字のテキストを返します。pdf ファイルにインデックスを付けるには、それらをデータベースに挿入する必要があります。これは、説明タグやタイトルなどの追加のメタデータもあり、検索エンジン用にリンクする必要があるためです。ファイル サーバーから txt ファイルまたは pdf ファイルのインデックスを作成すると、データベースから他のデータを取得して、それらを検索エンジン上のそれらの txt ファイルにリンクすることはできません。そのため、引き続き PDF ファイルをクラウドに保存しますが、タグのタイトルと説明のインデックスを作成するには、テキスト バージョンもデータベースに格納する必要があります。これらは異なるテーブルですが、データベースにも存在する必要があります。
ありがとう、