問題タブ [memory-table]
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 - mysql、テーブル内の制限されたエントリを強制する
一時データをメモリ テーブルに保持します。最新の 20 個のエントリだけが必要で、データが常にヒープ上にあることを望みます。どうすればこれを達成できますか? メモリテーブルについてできることは何もないと確信していますが、エントリテーブルをどのように処理すればよいですか? 新しい値をプッシュするときはいつでも、autoincrease キーを追加して最も古いキーを削除する必要がありますか?
mysql - テーブル内のすべての列にインデックスを付ける
MySQLのインデックス作成に関していくつか質問があります。
1)メモリに保存されているテーブルにインデックスを付けるときに速度が向上しますか?
2)列フィールドで一致するテーブルを検索する場合、すべての列にインデックスを付けると、インデックスの目的が損なわれますか?
どうもありがとう。
mysql - Mysql: メモリ テーブルが max_heap_table_size に達した場合の対処方法は?
何度か読み取られるデータ行をキャッシュする方法として、mysql メモリ テーブルを使用しています。私のソリューションでは xcache または memcache を使用できないため、この代替手段を選択しました。このトピックに関するmysqlのマニュアルとフォーラムを読んだ後、テーブルが最大メモリ サイズに達するとエラーが発生するという結論に達しました。テーブルを切り捨ててメモリを解放するために、このエラーをキャッチする方法があるかどうかを知りたいです。使用できるメモリの制限を上げたくありません。テーブルが引き続き機能するように、メモリを自動的に解放する方法が必要です。
ありがとう。
mysql - 小さなMEMORYテーブルの主キーの単純な定数選択が非常に遅い
約650行、5 MBのデータ長、60 kBのインデックス長のMEMORYテーブルがあります(かなり小さいです)。1つのSMALLINTプライマリ(ハッシュ)キーと、約90の他の列(int、varchars、datetimes、blobまたはtextsなし)があります。(編集:BIGINT列にもハッシュキーがあります。)
私はこのクエリを(PHPから)かなり頻繁に実行しています(1秒間に約10回):
select * from userek where id = {CONST_ID} and kitiltva = 0 and kitiltva_meddig <"{CONST_DATETIME}" and inaktiv = 0
注:id
は主キーです。*
結果はさまざまな場所で使用され、基本的にすべての列がここかそこかで使用されるため、必要です。
私の問題は、クエリが定期的に異常に遅くなることです。平均0.5s
して、8s
最大。ほとんどの場合、それは非常に高速です。平均よりも速く実行75%
されます。しかし、それは平均よりも遅く、 。よりも遅いです。だからそれは長い尾を持っています。3ms
85%
15%
13%
1s
そして、私はそれを引き起こす可能性があるものがまったくわかりません。誰か考えはありますか?
mysql - 2台のサーバー、2台のメモリテーブル、異なるサイズ
2台のサーバーで両方ともMySQLインスタンスを実行しています。最初のserver1は、MySQL5.0.22を実行しています。もう1つのserver2は、MySQL5.1.58を実行しています。
にメモリテーブルを作成しserver1
、行を追加すると、そのサイズは即座になり8,190.0 KiB
ます。
ただし、にメモリテーブルを作成しserver2
て行を追加すると、そのサイズはまだわずかsome bytes
です。
これはMySQLのバージョンの違いが原因ですか、それとも(うまくいけば)変更できる設定が原因ですか?
編集:
この動作の理由はまだわかりませんが、回避策は見つかりました。だから、将来の参考のために、これは私のためにそれを修正したものです:
私のすべてのメモリテーブルは一度作成され、そこから読み取り専用になります。テーブルの最大行数をMySQLに指定すると、そのサイズは縮小します。次のクエリはあなたのためにそれを行います。
mysql - max_heap_table_size値を変更しますか?
max_heap_table_sizeの制限は16mbですが、この値をどこでどのように変更できますか?
mysql - メモリ テーブルの主キーは HASH でなければならないのはなぜですか?
メモリ テーブルを一連のキューとして使用したいと考えています。
したがって、int 列 a および b を持つメモリ テーブルが存在します。
次のようなクエリで:
SELECT b FROM table WHERE a=? ORDER BY b DESC LIMIT 1000
私はこれを試しました:
ただし、主キーは引き続き HASH です。
a
ということは、そのようなクエリのために別の key( ) を作成する必要があるということですか?主キーを BTREE インデックスにできないのはなぜですか? 主キーを通常のキーに変更した場合の違いは何ですか?