記事"SQLite: MQL5 での SQL データベースのネイティブな処理"についてのディスカッション - ページ 9 123456789101112 新しいコメント JRandomTrader 2021.11.21 09:42 #81 Maxim Kuznetsov #: SQLiteは1つのスレッド、あるいは1人のライターと多くの読者のために設計されている。多くのライターはそれについてではなく、「ライト」ではない他のベースについてです。 MQLがどうのこうのではなく、本当にどこでもそうなのです。 PostgreSQLが機能するのを私が見たいもう1つの理由です。 Maxim Kuznetsov 2021.11.21 09:58 #82 JRandomTrader #:それもPostgreSQLが機能するのを見たい理由の一つだ。 それで、何が問題なのですか?DLLを許可して使ってください。 私はPostgreSQLのユーザーではありませんが、MySQL、MonetDB、SQL Relay、mt5からのODBCを使ったことがあります。 必要なときは、自然の恩恵を待つより、自分でやったほうが簡単で早い。 Daniil Kurmyshev 2021.11.28 03:08 #83 Maxim Kuznetsov #:の場合、クエリー速度は低下し、必要なメモリーは増加する......。でも大丈夫です :-)SQLiteは、1つのスレッド、または1人のライターと多数のリーダーのために設計されています。SQLiteは1つのスレッド、または1人の書き手と多くの読み手のために設計されています。多くの書き手はそれについてではなく、"ライト "ではない他のベースについてです。 それはMQLについてではありません。 おそらく、あなたはSQLiteを準備する方法を知らない、そのようなすべての着信ストリームを破壊する単一のTCPサーバーなど、すなわち、その中にボトルネックはありません、このサーバーは、他のすべてのデータベースにある... SQLiteは、それが適切に準備されている場合、書き込み要求の速度は、Redisよりも高くなり、それ自体を読み取ることについて、あなたはベースのスレッドから読み取るとき、お互いにブロックされず、すべてがあなたのシステムリソースで残りの可能な限り高速に発生しますが、あなたはまた、RAM上のデータベースを展開する機会を与えられている、それは作成するときに、どのように、問題ではありませんし、あなたは、RAM上のディスクを作成し、その上にデータベースを配置し、シンボリックリンクを作成するための特別なソフトウェアを介して行うことができますあなたは、例えば、顧問のために使用する場合は、可能な限り最高の パフォーマンスを提供します。 そして、なぜSQLiteでキャッシュ共有が必要なのか理解されていないかもしれません...それは、エキスパートアドバイザーとスクリプトが最終的に消費する メモリが 少なく なるように、入力出力のためのメモリリソースを節約するために必要であり、その作業のために別のスレッドが割り当てられているだけで、インジケーターのために別のスレッドが割り当てられているわけではありません。 共有キャッシュモードが使用される場合、ベースとの接続は個別のスレッドではなくプロセス全体に対して開かれるため、リソースを節約することができますが、結果として上で説明したようなエラーが発生し、共有キャッシュはベースの作業を遅くします。 一方ではMQLの開発者の決定は、私には理解できますが、他方では、私はプラットフォームで多くの経験を持っており、誰もが同時に200以上のスレッドを実行したケースに会ったことがないので、100チャートの端末の制限で1ので、それぞれに1 Expert Advisorと1スクリプトを添付することができますが、あなたはまた、サービスの数にサービスを実行することができます私は制限はないと思うが、それは少なくとも便利ではありませんし、どのような場合にリソースを集約し、これらのスレッドがデータベースへの独自の接続を開いた場合、比較的その後、メモリの海のドロップです。 有能な開発者は、シングルスレッドとして多通貨のExpert Advisorを作成し、そのようなナンセンスに従事しないため、端末のこのような使用は、少なくとも不便であり、せいぜい意味がありません。 開発者の皆さん、共通キャッシュを削除するか、私が見落としている点を突いてください。 公式ドキュメントから"SQLite Shared-Cache"についての要点を抜粋: 「これはシステムが必要とするメモリとIOの量を大幅に減らすことができます。 これがそのリンク だ。 Anatoli Kazharski 2022.10.05 01:54 #84 MetaEditorで、 データベースを操作するための これらの ボタン(Runを 除く)はまだ機能していないのですか? 常にロックされています。 Anatoli Kazharski 2022.10.05 13:40 #85 このクエリは何も返しません: PRAGMA foreign_keys; FOREIGN KEY を 含めようとすると失敗します: string query = "PRAGMA foreign_keys=ON;"; if(!DatabaseExecute(m_db_handle, query)) { Print(__FUNCTION__, " > Query failed with code: ", GetLastError()); } ドキュメントにはこのような情報があります: https://www.sqlite.org/foreignkeys.html#fk_enable Tip: If the command "PRAGMA foreign_keys" returns no data instead of a single row containing "0" or "1", then the version of SQLite you are using does not support foreign keys (either because it is older than 3.6.19 or なぜなら、SQLITE_OMIT_FOREIGN_KEY またはSQLITE_OMIT_TRIGGER が定義された 状態でコンパイルされたから です)。 sqlite_omit_trigger このオプションを定義すると、TRIGGER オブジェクトのサポートが省略されます。この場合、CREATE TRIGGER コマンドも DROP TRIGGER コマンドも 使用できず、どちらかを実行しようとすると解析エラーになります。トリガを実装し、このオプションで省略されるコードは外部キー操作の 実装にも使用されるため、このオプションは外部キー制約の 強制も無効にします。 sqlite_omit_foreign_key このオプションが定義されている場合、外部キー制約 構文は 認識されません。 バージョンに問題はありません: //--- FOREIGN KEYを 有効にするには? Renat Fatkhullin 2022.10.05 14:28 #86 Anatoli Kazharski #:このクエリーは何も返さない:FOREIGN KEY を 含めようとすると失敗します:ドキュメントには以下の情報があります:https://www.sqlite.org/foreignkeys.html#fk_enableバージョンに問題はありません://---FOREIGN KEYを 有効にするには?FOREIGN KEYはデフォルトで有効になっていますが、SQLITE_OMIT_FOREIGN_KEYやSQLITE_OMIT_TRIGGERは使用しません。PRAGMA foreign_keys=ON; は使用しないでください。 。 パフォーマンスをチェックするには、https://www.sqlite.org/foreignkeys.html。CREATE TABLE artist( artistid INTEGER PRIMARY KEY, artistname TEXT ); CREATE TABLE track( trackid INTEGER, trackname TEXT, trackartist INTEGER, FOREIGN KEY(trackartist) REFERENCES artist(artistid) );エディタで作業する場合、エラーは発生せず、すべてが正しく動作します。 Anatoli Kazharski 2022.10.05 15:01 #87 Renat Fatkhullin #:FOREIGN KEY はデフォルトで有効になっていますが、SQLITE_OMIT_FOREIGN_KEY や SQLITE_OMIT_TRIGGER は使用しません。 。 パフォーマンスをチェックするには、https://www.sqlite.org/foreignkeys.html の例を参考にしてください。エディタで作業する場合、エラーは発生せず、すべてが正しく動作します。 回答ありがとうございます! なぜか期待した結果が得られません: //--- エラーはどこですか? これは私も対処したいことです: 取引、自動取引システム、取引戦略のテストに関するフォーラム SQLite:MQL5でSQLデータベースをネイティブに操作する」の記事に関する議論。 Anatoli Kazharski, 2022.10.05 01:54 AM MetaEditorで、 データベースを操作するための これらの ボタン(Executeを 除く)はまだ動作しませんか? 常にブロックされています。 Anatoli Kazharski 2022.10.05 17:53 #88 上の例を誰かに再現してもらってください。 トラック テーブルの最後の行(ハイライトされている)は追加されるべきではありません。 Anatoli Kazharski 2022.10.06 01:22 #89 SQLiteStudioで 同じスキーマをテストしたところ、すべて正常に動作しました。 親テーブルに存在しないIDの 行を追加 しようとすると、このような警告が表示されます: Renat Fatkhullin 2022.10.06 01:31 #90 ありがとう。 123456789101112 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
Maxim Kuznetsov #:
SQLiteは1つのスレッド、あるいは1人のライターと多くの読者のために設計されている。多くのライターはそれについてではなく、「ライト」ではない他のベースについてです。
MQLがどうのこうのではなく、本当にどこでもそうなのです。
PostgreSQLが機能するのを私が見たいもう1つの理由です。
それもPostgreSQLが機能するのを見たい理由の一つだ。
それで、何が問題なのですか?DLLを許可して使ってください。
私はPostgreSQLのユーザーではありませんが、MySQL、MonetDB、SQL Relay、mt5からのODBCを使ったことがあります。
必要なときは、自然の恩恵を待つより、自分でやったほうが簡単で早い。
の場合、クエリー速度は低下し、必要なメモリーは増加する......。
でも大丈夫です :-)
SQLiteは、1つのスレッド、または1人のライターと多数のリーダーのために設計されています。SQLiteは1つのスレッド、または1人の書き手と多くの読み手のために設計されています。多くの書き手はそれについてではなく、"ライト "ではない他のベースについてです。
それはMQLについてではありません。おそらく、あなたはSQLiteを準備する方法を知らない、そのようなすべての着信ストリームを破壊する単一のTCPサーバーなど、すなわち、その中にボトルネックはありません、このサーバーは、他のすべてのデータベースにある...
SQLiteは、それが適切に準備されている場合、書き込み要求の速度は、Redisよりも高くなり、それ自体を読み取ることについて、あなたはベースのスレッドから読み取るとき、お互いにブロックされず、すべてがあなたのシステムリソースで残りの可能な限り高速に発生しますが、あなたはまた、RAM上のデータベースを展開する機会を与えられている、それは作成するときに、どのように、問題ではありませんし、あなたは、RAM上のディスクを作成し、その上にデータベースを配置し、シンボリックリンクを作成するための特別なソフトウェアを介して行うことができますあなたは、例えば、顧問のために使用する場合は、可能な限り最高の パフォーマンスを提供します。
そして、なぜSQLiteでキャッシュ共有が必要なのか理解されていないかもしれません...それは、エキスパートアドバイザーとスクリプトが最終的に消費する メモリが 少なく なるように、入力出力のためのメモリリソースを節約するために必要であり、その作業のために別のスレッドが割り当てられているだけで、インジケーターのために別のスレッドが割り当てられているわけではありません。
共有キャッシュモードが使用される場合、ベースとの接続は個別のスレッドではなくプロセス全体に対して開かれるため、リソースを節約することができますが、結果として上で説明したようなエラーが発生し、共有キャッシュはベースの作業を遅くします。
一方ではMQLの開発者の決定は、私には理解できますが、他方では、私はプラットフォームで多くの経験を持っており、誰もが同時に200以上のスレッドを実行したケースに会ったことがないので、100チャートの端末の制限で1ので、それぞれに1 Expert Advisorと1スクリプトを添付することができますが、あなたはまた、サービスの数にサービスを実行することができます私は制限はないと思うが、それは少なくとも便利ではありませんし、どのような場合にリソースを集約し、これらのスレッドがデータベースへの独自の接続を開いた場合、比較的その後、メモリの海のドロップです。
有能な開発者は、シングルスレッドとして多通貨のExpert Advisorを作成し、そのようなナンセンスに従事しないため、端末のこのような使用は、少なくとも不便であり、せいぜい意味がありません。
開発者の皆さん、共通キャッシュを削除するか、私が見落としている点を突いてください。
公式ドキュメントから"SQLite Shared-Cache"についての要点を抜粋:
「これはシステムが必要とするメモリとIOの量を大幅に減らすことができます。
これがそのリンク だ。
MetaEditorで、 データベースを操作するための これらの ボタン(Runを 除く)はまだ機能していないのですか?
常にロックされています。
このクエリは何も返しません:
FOREIGN KEY を 含めようとすると失敗します:
ドキュメントにはこのような情報があります: https://www.sqlite.org/foreignkeys.html#fk_enable
Tip: If the command "PRAGMA foreign_keys" returns no data instead of a single row containing "0" or "1", then the version of SQLite you are using does not support foreign keys (either because it is older than 3.6.19 or
なぜなら、SQLITE_OMIT_FOREIGN_KEY またはSQLITE_OMIT_TRIGGER が定義された 状態でコンパイルされたから です)。
sqlite_omit_trigger
sqlite_omit_foreign_key
バージョンに問題はありません:
//---
FOREIGN KEYを 有効にするには?
このクエリーは何も返さない:
FOREIGN KEY を 含めようとすると失敗します:
ドキュメントには以下の情報があります:https://www.sqlite.org/foreignkeys.html#fk_enable
バージョンに問題はありません:
//---
FOREIGN KEYを 有効にするには?
FOREIGN KEYはデフォルトで有効になっていますが、SQLITE_OMIT_FOREIGN_KEYやSQLITE_OMIT_TRIGGERは使用しません。
PRAGMA foreign_keys=ON; は使用しないでください。。
パフォーマンスをチェックするには、https://www.sqlite.org/foreignkeys.html。
CREATE TABLE artist( artistid INTEGER PRIMARY KEY, artistname TEXT ); CREATE TABLE track( trackid INTEGER, trackname TEXT, trackartist INTEGER, FOREIGN KEY(trackartist) REFERENCES artist(artistid) );エディタで作業する場合、エラーは発生せず、すべてが正しく動作します。
FOREIGN KEY はデフォルトで有効になっていますが、SQLITE_OMIT_FOREIGN_KEY や SQLITE_OMIT_TRIGGER は使用しません。
。
パフォーマンスをチェックするには、https://www.sqlite.org/foreignkeys.html の例を参考にしてください。
エディタで作業する場合、エラーは発生せず、すべてが正しく動作します。
回答ありがとうございます!
なぜか期待した結果が得られません:
//---
エラーはどこですか?
これは私も対処したいことです:
取引、自動取引システム、取引戦略のテストに関するフォーラム
SQLite:MQL5でSQLデータベースをネイティブに操作する」の記事に関する議論。
Anatoli Kazharski, 2022.10.05 01:54 AM
MetaEditorで、 データベースを操作するための これらの ボタン(Executeを 除く)はまだ動作しませんか?
常にブロックされています。
上の例を誰かに再現してもらってください。
トラック テーブルの最後の行(ハイライトされている)は追加されるべきではありません。
SQLiteStudioで 同じスキーマをテストしたところ、すべて正常に動作しました。
親テーブルに存在しないIDの 行を追加 しようとすると、このような警告が表示されます: