기고글 토론 "MQL5(MQL4)에서 MySQL 데이터베이스에 액세스하는 방법" - 페이지 29

 
Viktor Vasilyuk #:

설명해 주셔서 감사합니다. 제가 모든 것을 알 수는 없기 때문에 질문하는 것입니다.

여기서 해결책을 찾았습니다.

추신 : SELECT를 확인했습니다 - 작동합니다.

글쎄, 쿼리 결과의 변환은 허용되지만 테이블 수준에서 utf8mb4의 정의, 즉 모든 필드에 대해 기본적으로 varchar가 사용되며 텍스트 필드에 대한 쿼리에 조건이있는 경우 MySQL이 암시 적으로 변환을 시도한다는 것을 잊지 마십시오. 그리고 텍스트 열에 인덱스가 구축되어 있을 수 있다는 점을 고려하면 이러한 변환 중에 옵티마이저가 이를 포착하지 못할 수 있으므로 쿼리 성능에 문제가 발생할 수 있습니다.
따라서 테이블 수준과 열 정의 수준 모두에서 이러한 것들을 제어하는 것이 바람직합니다.
 
Eugeniy Lugovoy #:
쿼리 결과 변환은 허용되지만 테이블 수준에서 utf8mb4 정의, 즉 모든 필드에 대해 기본적으로 varchar가 사용되며 쿼리의 텍스트 필드에 조건이 있는 경우 MySQL이 암시적으로 변환하려고 시도한다는 점을 잊지 마세요. 그리고 텍스트 열에 인덱스가 구축되어 있을 수 있다는 점을 고려하면 이러한 변환 중에 옵티마이저가 이를 포착하지 못할 수 있으므로 쿼리 성능에 문제가 발생할 수 있습니다.
따라서 테이블 수준과 열 정의 수준 모두에서 이러한 것들을 제어하는 것이 바람직합니다.

설명 필드가 있습니다. "주석"과 같은 필드는 필요하지 않으며 텍스트 설명만 있으면 됩니다. 인덱스가 없습니다.

MySQL utf8mb4는 기본적으로 그렇습니다. 다음에 DDL에서 지정하는 방법을 알려주실 수 있나요? 무엇을 변경하고 어떤 인코딩으로 변경해야 하나요 ?

 
궁금한 게 있는데 MQLmySQL은 데이터베이스 유형에 대해 까다롭나요? 새 데이터베이스로 마이그레이션하기 전까지 스크립트가 데이터베이스에 연결하던 문제가 발생했습니다. 갑자기 읽기/쓰기/삭제에 문제가 있습니다. 포트 3306에 대한 모든 권한이 활성화되어 있고 새 데이터베이스는 단순히 이전 데이터베이스의 복사본입니다.

어떤 생각이 있으신가요?
 
Boaz Nyagaka Moses #:
이 오류가 계속 발생합니다:
2022.03.02 20:22:25.198 MySQL-001 EURUSD,M15: 연결 오류 #2059 인증 플러그인 'caching_sha2_password'를 로드할 수 없습니다: 지정한 모듈을 찾을 수 없습니다.

이 보아즈 문제를 해결하셨나요?

 

MySqlCursorFetchRow 이후에 검색할 수 있는 필드의 수를 알 수 있는 방법이 있나요?

행 필드 크기와 같은 숨겨진 함수 일 수도 있습니다 ...


내가 알기로는 필드가 없으면 MySqlGetFieldAsString은 비어있는 것을 반환합니다. 그러나 문자열 필드에 특별히 빈 필드가 포함되어있는 경우에도 비어 있습니다. 즉, 무차별 대입으로 필드 수를 추적하는 것이 항상 가능한 것은 아닙니다.


버팀목으로 먼저 SQL 명령을 통해 찾은 다음 다시 선택할 수 있지만 이것은 이미 불필요한 선택입니다.



라이브러리를 개발해 주세요, 매우 유용한 기능입니다. 물론 오래 전에 몇 가지 mysql을 mt에 구축했습니다.

 

쿼리 삽입 및 업데이트 - 쿼리 제한이 16KB 뿐인가요?


쿼리가 16.000 자 이상이면 메타 트레이더가 충돌 (닫힘)합니다. 그보다 적 으면 괜찮습니다.

32.000 자에 대한 업데이트 예제를 첨부합니다.


데이터베이스에서 업데이트 할 필드 - LONGTEXT

파일:
test2.txt  64 kb
 
andreysneg #:

쿼리 삽입 및 업데이트 - 16KB 쿼리 제한만 있나요?


쿼리가 16.000자를 초과하면 메타트레이더가 충돌(닫힘)합니다. 이보다 작으면 괜찮습니다.

32.000 자에 대한 업데이트 예제를 첨부합니다.


데이터베이스에서 업데이트 할 필드 - LONGTEXT

이것은 MQL의 줄 크기 제한과 비슷합니다 :-(

와 비슷하며 더 간결하게 작성할 수 있습니다:

REPLACE d1 ("t", "o", "h", "l", "c") VALUES (time1,open1,high1,low1,close1), (time2,open2,high2,low2,close2) ....

및/또는 단일 트랜잭션으로 결합하여 두 개의 쿼리로 분할할 수 있습니다.

 
안녕하세요! 전문가를위한 질문 - 얼마나 많은 데이터와 MySQL에서 MT5로 읽을 수있는 빈도 ?
예를 들어 50,000 개의 요소가 있고 0,1 초마다 테이블에서 업데이트합니다 (숫자). MT5가 MySQL에서 이를 가져와 0.1초마다 업데이트할 수 있나요? 이 문서에 명시된 쿼리당 KB에 대한 기능 제한이 있나요?
 
Alex Renko #:
안녕하세요! 전문가를위한 질문 - 얼마나 많은 데이터와 MySQL에서 MT5로 읽을 수있는 빈도 ?
예를 들어 데이터 50,000 개 요소가 있고 0,1 초마다 테이블에서 업데이트합니다 (숫자). MT5가 MySQL에서 이를 가져와 0.1초마다 업데이트할 수 있나요? 1 쿼리에 대해 KB에 대한이 문서에 제공된 기능에 제한이 있습니까?

글쎄, 질문은 확실히 흥미 롭습니다 ...

반환되는 SELECT 쿼리 행 수에는 제한이 없다고 말해야합니다.

쿼리 자체의 크기 제한은 64Kb입니다. 따라서 50 만 행의 데이터를 업데이트하려는 경우 각각 1000 행씩 일괄 처리로 분할하여 50 개의 쿼리를 보내는 것이 좋습니다.

100ms의 속도에 관해서는 하나의 서버에 데이터베이스가 있고 데이터베이스에 연결하여 MQL을 실행하는 터미널이 다소 멀리 떨어져 있는 경우 네트워크 지연 시간, 즉 핑....의 크기가 발생할 가능성이 큽니다.

예를 들어 데이터베이스 서버와 터미널 사이에 60ms의 핑이 있는 경우 서버의 실제 응답은 = 60ms(쿼리) + 데이터베이스 측의 쿼리 처리 시간 + 60ms(응답)로 지연됩니다.


이 프로젝트는 동적 mysql 라이브러리의 기능에 액세스하기 위한 간단한 래퍼일 뿐입니다.

기능 세트는 실질적으로 유용한 주요 기능으로 제한되며, 비동기 쿼리에 대한 지원 추가와 같이 필요한 것을 확장하고 추가 한 다음 각 쿼리가 차례로 실행될 때까지 기다리지 않고 50 개의 쿼리를 모두 1000 줄로 보낼 수 있습니다.


추신: Github에서 라이브러리 소스 및 사전 설정된 제한을 확인할 수 있습니다(https://github.com/elugovoy/MQLMySQL-Project/tree/master/MQLMySQL).

추신: 다운로드하여 재량에 따라 수정하고 컴파일 및 테스트할 수도 있습니다.

MQLMySQL-Project/MQLMySQL at master · elugovoy/MQLMySQL-Project
  • elugovoy
  • github.com
MQL & DLL libraries for working with MySQL database - elugovoy/MQLMySQL-Project
 
andreysneg #:

MySqlCursorFetchRow 이후에 검색할 수 있는 필드의 수를 알 수 있는 방법이 있나요?

행 필드 크기와 같은 숨겨진 함수가있을 수 있습니다 ...


내가 알기로는 필드가 없으면 MySqlGetFieldAsString은 비어있는 것을 반환합니다. 그러나 문자열 필드에 특별히 빈 필드가 포함되어있는 경우에도 비어 있습니다. 즉, 무차별 대입으로 필드 수를 추적하는 것이 항상 가능한 것은 아닙니다.


버팀목으로 먼저 sql 명령을 통해 알아낸 다음 다시 선택할 수 있지만 이는 이미 불필요한 선택입니다.



라이브러리를 개발해 주세요, 매우 유용한 기능입니다. 물론, 몇 가지 mysql은 오래 전에 MT에 내장되어야합니다.

흠... 그리고 어떤 종류의 쿼리가 당신에게 너무 까다로워서 그것에 의해 반환되는 필드 수를 결정할 필요가 있습니까?

일반적으로 SELECT 명령에는 특정 상황에서 필요한 항목만 나열합니다. SELECT *를 사용하지 말고 필요한 항목만 선택하세요.

목발을 만들어서는 안 되며, Github에서 소스 코드를 가져와 mysql_fetch_fields() MySQL API 함수에 대한 래퍼를 추가할 수 있습니다.