"SQLite: MQL5'te SQL veritabanlarıyla yerel olarak çalışma" makalesi için tartışma - sayfa 9
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Maxim Kuznetsov #:
SQLite bir iş parçacığı ya da bir yazar ve birçok okuyucu için tasarlanmıştır. Birçok yazar bununla ilgili değil, "hafif" olmayan diğer temellerle ilgili.
Bu MQL ile ilgili değil - bu sadece gerçekten ve her yerde olduğu gibi.
PostgreSQL'in çalıştığını görmek istememin bir başka nedeni de bu.
PostgreSQL'in çalıştığını görmek istememin bir başka nedeni de bu.
Öyleyse yapın, sorun nedir? DLL'ye izin verin ve kullanın.
PostgreSQL kullanıcısı değilim, ancak MySQL, MonetDB, SQL Relay ve mt5'ten ODBC kullandım.
Bir ihtiyaç olduğunda, bunu kendiniz yapmak, doğadan iyilik beklemekten daha kolay ve hızlıdır
sorgu hızı düşecek ve bellek gereksinimleri artacaktır....
ama her şey yolunda :-)
SQLite bir iş parçacığı ya da bir yazar ve birçok okuyucu için tasarlanmıştır. Birçok yazar bu konuda, "hafif" olmayan diğer üsler hakkında değildir.
Bu MQL ile ilgili değil - bu sadece gerçekten ve her yerde olduğu gibi.Belki de SQLite'ı nasıl hazırlayacağınızı bilmiyorsunuz, içinde hiçbir darboğaz yok, yani gelen tüm akışları yok eden tek bir TCP sunucusu gibi, bu sunucu diğer tüm veritabanlarında ...
SQLite bir hediyedir, eğer uygun şekilde hazırlanırsa, yazma isteklerinin hızı Redis'ten daha yüksek olacaktır ve kendisini okumakla ilgili olarak, temel iş parçacıklarından okuduğunuzda birbirlerini engellemez ve her şey sistem kaynaklarınızda dinlenerek olabildiğince hızlı gerçekleşir, ayrıca veritabanını RAM'de dağıtma fırsatı verilir, oluştururken nasıl olduğu önemli değildir ve RAM'de bir disk oluşturmak için özel bir yazılım aracılığıyla ve veritabanını yerleştirmek ve sembolik bir bağlantı oluşturmak için, örneğin danışmanlar için kullanıyorsanız, mümkün olan en yüksek performansı sağlayacaktır.
Ve belki de SQLite'da önbellek paylaşımının neden gerekli olduğunu anlamıyorsunuz..., girdi çıktısı için bellek kaynaklarından tasarruf etmek gerekir, böylece Uzman Danışmanlar ve komut dosyaları sonunda daha az bellek tüketir ve yalnızca işleri için ayrı bir iş parçacığı tahsis edildiğinden, göstergeler için ayrı bir iş parçacığı tahsis edilmez.
Paylaşılan önbellek modu kullanıldığında, taban ile bağlantı ayrı iş parçacıkları için değil, tüm işlem için açılır, bu da kaynaklardan tasarruf sağlar, ancak sonuç olarak yukarıda açıkladığım benzer hatalara yol açar ve paylaşılan önbellek tabanın çalışmasını yavaşlatır.
MQL geliştiricilerinin kararı bir yandan benim için anlaşılabilir, ancak diğer yandan çok fazla değil, çünkü platformla ilgili çok fazla deneyime sahibim ve herhangi birinin aynı anda 200'den fazla iş parçacığı çalıştırdığı durumlarla karşılaşmadım, terminalde 1'de 100 grafik sınırı, böylece her birine 1 Uzman Danışman ve 1 komut dosyası ekleyebilirsiniz, ancak hizmetleri de çalıştırabilirsiniz hizmetlerin sayısında bir sınır olmadığını düşünüyorum, ancak en azından her durumda uygun ve kaynak yoğun değil ve bu iş parçacıkları veritabanına kendi bağlantılarını açtıysa, o zaman bellek okyanusunda nispeten bir düşüş.
Terminalin bu şekilde kullanılması en azından sakıncalıdır ve en fazla hiçbir anlam ifade etmez, çünkü yetkin bir geliştirici tek bir iş parçacığı olarak çoklu para birimi Uzman Danışmanı yapacak ve böyle bir saçmalıkla uğraşmayacaktır.
Sevgili geliştiriciler, lütfen ortak önbelleği kaldırın veya gözden kaçırdığım bir şey varsa beni dürtün.
"SQLite Shared-Cache" hakkındaki özü resmi belgelerden aldım:
"Bu, sistemin ihtiyaç duyduğu bellek ve IO miktarını önemli ölçüde azaltabilir."
İşte bağlantı, okuyun.
MetaEditor'de , veritabanı ile çalışmak için bu düğmeler ( Çalıştır hariç) henüz çalışmıyor mu?
Her zaman kilitlidirler.
Bu sorgu hiçbir şey döndürmez:
Bir FOREIGN KEY ekleme girişimi başarısız olur:
Belgelerde şu bilgiler bulunmaktadır: 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
çünküSQLITE_OMIT_FOREIGN_KEY veya SQLITE_OMIT_TRIGGER tanımlı olarak derlenmiştir ).
SQLITE_OMIT_TRIGGER
SQLITE_OMIT_FOREIGN_KEY
Sürümde yanlış bir şey yok:
//---
FOREIGN KEY nasıl etkinleştirilir?
Bu sorgu hiçbir şey döndürmez:
Bir FOREIGN KEY ekleme girişimi başarısız olur:
Belgelerde şu bilgiler bulunmaktadır: https: //www.sqlite.org/foreignkeys.html#fk_enable
Sürümde yanlış bir şey yok:
//---
FOREIGN KEY nasıl etkinleştirilir?
FOREIGN KEY varsayılan olarak etkindir, SQLITE_OMIT_FOREIGN_KEY veya SQLITE_OMIT_TRIGGER kullanmayız.
PRAGMA foreign_keys=ON; kullanılmamalıdır..
Performansı kontrol etmek için https://www.sqlite.org/foreignkeys.html örneğini kullanabilirsiniz.
CREATE TABLE artist( artistid INTEGER PRIMARY KEY, artistname TEXT ); CREATE TABLE track( trackid INTEGER, trackname TEXT, trackartist INTEGER, FOREIGN KEY(trackartist) REFERENCES artist(artistid) );Editörde çalışırken, her şey hatasız bir şekilde düzgün çalışıyor.
FOREIGN KEY varsayılan olarak etkindir, SQLITE_OMIT_FOREIGN_KEY veya SQLITE_OMIT_TRIGGER kullanmayız.
PRAGMA foreign_keys=ON; kullanılmamalıdır.Performansı kontrol etmek için https://www.sqlite.org/foreignkeys.html örneğini kullanabilirsiniz.
Editörde çalışırken, her şey hatasız bir şekilde düzgün çalışıyor.
Cevap için teşekkürler!
Bazı nedenlerden dolayı beklediğim sonucu alamıyorum:
//---
Hata nerede?
Benim de uğraşmak istediğim şey bu:
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi üzerine forum
"SQLite: MQL5'te SQL veritabanları ile yerel çalışma" makalesinin tartışılması.
Anatoli Kazharski, 2022.10.05 01:54 AM
MetaEditor'de veritabanı ile çalışmak için bu düğmeler ( Execute hariç) henüz çalışmıyor mu?
Her zaman engellenirler.
Lütfen birinden yukarıdaki örneği yeniden üretmesini isteyin.
İz tablosundaki son satır (vurgulanmış) eklenmemelidir.
Aynı şemayı SQLiteStudio 'da test ettim ve her şey doğru çalışıyor.
Üst tabloda mevcut olmayan bir kimliğe sahip bir satır eklemeye çalışırken uyarı böyle görünmelidir: