pdo를 기반으로하는 데이터베이스 클래스에서 작업하고 있습니다. 사용되는 데이터베이스는 mysql 데이터베이스이지만 더 많은 성능을 얻기 위해 데이터베이스를 캐시하고 싶습니다. SQlite in-memory 데이터베이스에 데이터베이스를 캐싱하고 SELECT를 사용하여 INSERT, UPDATE, ... DB에서 db를 업데이트하는 것이 좋습니다. 하지만, "cache = new PDO ('sqlite : memory');라고 쓰면 새로운 캐시가 생성됩니까? 아니면 기존 데이터베이스를 사용합니까? 또한 한 서버에서 여러 웹 사이트를 호스팅하는 경우 다른 메모리 내 데이터베이스를 어떻게 사용할 수 있습니까?PHP : 데이터베이스 캐시 (sqlite 메모리 내장)
답변
각 SQLite 메모리 내 데이터베이스는 연결에 따라 다릅니다. 에 대한 두 개의 연결을 열어도 동일한 프로세스 내에서 메모리 :을 열어도 두 개의 서로 다른 인 메모리 데이터베이스가 만들어집니다. 따라서 새로운 데이터베이스는 항상 생성되며 기존 데이터베이스를 사용하지 않습니다.
올바른 이름을 사용하여 메모리 내장 데이터베이스를 만드는 데주의하십시오. 메모리 : 이외의 다른 이름 (같은 : memorry : 또는 메모리 또는 /: 메모리 :가) 실제로 메모리 데이터베이스하지만 일반 파일 기반 데이터베이스를 작성하지 않습니다. 이것은 조용히 일어난다.
제안 된 캐싱으로 얻게 될 성능 향상 효과는 작습니다. MySQL에서 선택을하고 컴퓨터에 충분한 메모리가 있으면 OS 디스크 버퍼링으로 인해 데이터가 이미 RAM에있을 수 있습니다. 그래서 SQLite in-memory 데이터베이스의 형태로 RAM의 또 다른 레이어를 추가하는 것은별로 도움이되지 않습니다.
시스템이 읽기 전용이 아닌 경우 제안 된 캐싱은 복잡하거나 잘못된 캐싱 논리로 쉽게 이어집니다. 일부 프로세스가 데이터 업데이트를 수행하는 경우 캐시를 업데이트하고 MySQL 데이터베이스를 업데이트해야하며 캐시가 더 이상 유효하지 않으며 다른 프로세스에서 MySQL의 데이터를 읽어야한다고 알리는 메커니즘을 만들어야합니다. 그렇지 않으면 데이터가 곧 엉망이됩니다. 두 프로세스가 동일한 데이터를 같은 시간에 다른 값으로 업데이트하기로 결정할 때 어떤 일이 벌어 지는지 생각해보십시오. 너는 갈등이있다.
더 많은 성능을 얻으려면 먼저 서버와 MySQL을 조정해야합니다. 충분하지 않은 경우 Memcached와 같은 캐시를 추가합니다. 이는 응용 프로그램 프로세스가 아닌 별도의 프로세스입니다. 그렇더라도 데이터가 업데이트시 일관성있게 유지되는 방식으로 응용 프로그램 논리를 작성하는 데주의해야합니다. MySQL만을 사용하고 InnoDB와의 트랜잭션을 올바르게 수행하면 MySQL이 대신 해줍니다.
- 1. 파이썬의 메모리 내장 데이터베이스
- 2. PHP PDO를 사용하여 메모리 내장 SQLite 데이터베이스를 어떻게 삭제합니까?
- 3. 임시 메모리 데이터베이스 in SQLite
- 4. PHP SQlite 데이터베이스 양식
- 5. 데이터가있는 H2 메모리 내장 데이터베이스 초기화
- 6. sqlite3에 메모리 내장 데이터베이스 파일을 열려면 어떻게합니까?
- 7. H2 메모리 내장 데이터베이스 쿼리가 매우 느립니다.
- 8. sqlite 및 php 열린 데이터베이스
- 9. 안드로이드에서 SQLite 데이터베이스 테스트하기
- 10. 데이터베이스 내장
- 11. PHP/SQLite - 디스크에서 메모리로 테이블 복사하기
- 12. 안드로이드 내장 메모리
- 13. IronPython 내장 메모리 누수
- 14. Python의 영구 메모리 내장
- 15. C API로 메모리 내 SQLite 데이터베이스 크기를 측정하는 방법은 무엇입니까?
- 16. 심포니 내장 캐시 대 APC
- 17. SQLite 공유 캐시
- 18. 데이터베이스 오류 백업을위한 메모리 데이터베이스
- 19. C 프로그래밍 언어의 데이터 구조와 알고리즘을 사용하는 메모리 내장 데이터베이스
- 20. C api에서 명명 된 메모리 내장 데이터베이스 연결
- 21. sqlite 데이터베이스
- 22. 서버 기반 내장 데이터베이스
- 23. MFC 및 내장 데이터베이스?
- 24. Qt를위한 좋은 내장 데이터베이스?
- 25. 메모리 캐시 또는 동시 사전?
- 26. Java 메모리 인식 캐시
- 27. 메모리 캐시 항목에 액세스하기
- 28. 캐시 메모리 혼동
- 29. 메모리 내 캐시 공유
- 30. 캐시 메모리 작동 방식
당신은 mysql에 메모리 엔진이 있다는 것을 알지? –
하지만 SQlite는 로컬이고 mysql은 원격 (-> slow) 일 수 있습니다. – joschua011