sourcetip

MySQL보다 SQLite가 더 빠릅니까?

fileupload 2023. 9. 15. 21:17
반응형

MySQL보다 SQLite가 더 빠릅니까?

저는 팀스피크 3 서버를 설치하고 싶습니다.SQLite와 MySQL 중에서 데이터베이스를 선택할 수 있습니다.저는 보통 운영에 SQLite를 사용하지 않는 편입니다.하지만 다른 한편으로는 팀스피크 서버입니다.좋아요, 제가 이걸 검색해볼게요...다음을 찾았습니다.


  1. SQLite3는 MySQL 데이터베이스보다 훨씬 빠릅니다.파일 데이터베이스가 항상 유닉스 소켓보다 빠르기 때문입니다.했을 때 데이터베이스(약3에서는 즉시. MySQL 데이터베이스(127.0.0.1)에서는 약 0.5-1초가 걸렸고 SQLite 3에서는 약 0.1초가 걸렸습니다. [...]

http://forum.teamspeak.com/showthread.php/77126-SQLite-vs-MySQL-Answer-is-here

저는 SQLite 대 MySQL 논쟁을 시작하고 싶지 않습니다.나는 단지 묻고 싶습니다.그의 주장이 타당하기까지 합니까?그의 말이 사실이라고는 상상할 수 없습니다.하지만 유감스럽게도 저는 이 질문에 직접 답할 만큼 전문가가 아닙니다.

TeamSpeak dev는 SQLite와 MySQL 간의 DB 아키텍처에 큰 차이가 있을 수 있으며, 이는 속도의 큰 차이를 설명합니다(이는 상상할 수 없습니다)

처음 액세스 시 SQLite에 더 빠르게 표시됨

처음에는 SQLite에 대한 액세스 시간이 더 빠르게 나타나지만, 이 시간은 온라인 상태의 사용자 수가 적습니다.SQLite는 매우 단순한 접근 알고리즘을 사용합니다. 빠르고 동시성을 처리하지는 않습니다.

데이터베이스가 증가함에 따라 동시 액세스의 양이 증가하기 시작합니다.서버가 여러 요청을 처리하는 방식은 완전히 다르며, 동시성을 높이기 위해 훨씬 복잡하고 최적화되어 있습니다.예를 들어 업데이트가 진행 중인 경우 SQLite가 전체 테이블을 잠그고 주문을 대기열에 넣습니다.

RDBMS의 확장성을 높이는 추가 작업이 많습니다.

예를 들어 MySQL은 사용자가 한 명이라도 액세스 QUE, 시간당 단일 사용자 실행만 허용하는 대신 부분적으로 테이블 잠금 및 다른 매우 복잡한 작업을 생성하여 데이터베이스가 다른 동시 액세스에 여전히 액세스할 수 있도록 합니다.

이렇게 하면 단일 사용자 연결 속도가 느려지지만, 향후 100명의 사용자가 온라인 상태가 되면 효과를 볼 수 있으며, 이 경우 SQLite의 간단한 "LOCK THE TABLE and EXECURE ANITE Single Query Every" 절차가 서버를 독차지하게 됩니다.

SQLite는 단순화 및 자체 포함 데이터베이스 응용프로그램을 위해 만들어졌습니다.

한 번에 데이터베이스에 10개의 동시 액세스 쓰기가 필요한 경우 SQLite는 성능이 우수할 수 있지만 SQLite를 사용하여 데이터베이스에 데이터를 지속적으로 쓰고 읽는 100명의 사용자 애플리케이션은 원하지 않을 것입니다.그런 시나리오를 위해 설계된 것이 아니기 때문에 자원을 낭비하게 됩니다.

팀스피크 시나리오를 고려할 때 SQLite를 사용해도 무방하며, 일부 비즈니스의 경우에도 새 콘텐츠를 추가하지 않는 한 읽기 전용 데이터베이스가 필요한 웹 사이트도 있습니다.

이와 같은 용도로 SQLite는 비용이 저렴하고 구현이 용이하며 자체 구성된 완벽한 솔루션으로 작업을 완료할 수 있습니다.

이와 관련된 차이점은 SQLite가 훨씬 더 간단한 잠금 알고리즘(단순 글로벌 데이터베이스 잠금)을 사용한다는 점입니다.

MySQL 및 대부분의 다른 DB 서버와 마찬가지로 세분화된 잠금을 사용하는 것은 데이터베이스 사용자가 한 명뿐인 경우 훨씬 더 복잡하고 속도가 느리지만 동시성을 더 많이 허용하려면 필요합니다.

개인적으로 SQLite 대 MySQL을 테스트해 본 적은 없지만, 웹에서 (를 들어) 반대의 예를 쉽게 찾을 수 있습니다.당신은 그다지 종교적이지 않은 질문을 하기도 합니다. 그 주장이 타당한가요?

첫째, 논쟁의 본질은 다소 억측적입니다.Unix 소켓은 데이터베이스 서버와 통신하는 데 사용됩니다."파일 데이터베이스"는 통신이 컴파일된 인터페이스를 통해 이루어지는 것을 지칭하는 것으로 보입니다.SQLite의 용어를 사용하면 서버가 없습니다.대부분의 데이터베이스는 데이터를 파일에 저장하기 때문에 "파일 데이터베이스"라는 용어는 약간 오해의 소지가 있습니다.

데이터베이스 성능에는 다음과 같은 여러 요소가 포함됩니다.

  • 쿼리를 데이터베이스에 전달합니다.
  • 컴파일 속도(사전 컴파일된 쿼리를 저장할 수 있는 기능은 여기에 이점이 있습니다).
  • 처리 속도.
  • 복잡한 처리를 처리하는 능력.
  • 컴파일러 최적화 및 실행 엔진 알고리즘
  • 결과를 응용프로그램에 다시 전달합니다.

인터페이스가 컴파일되는 것은 이 중 첫 번째와 마지막에 영향을 미칩니다.서버가 없는 데이터베이스가 나머지 부분에서 탁월한 성능을 발휘하는 것을 방해하는 것은 없습니다.그러나 데이터베이스 서버는 일반적으로 SQLite보다 훨씬 큰 수백만 줄의 코드입니다.이 중 많은 부분이 추가 기능을 지원합니다.그 중 일부는 향상된 최적화와 더 나은 알고리즘을 지원합니다.

대부분의 성능 질문과 마찬가지로 사용자 환경의 데이터에 시스템을 직접 테스트해 보는 것이 답입니다.서버가 없다는 것이 자동적인 성능 향상은 아닙니다.서버가 있다고 해서 데이터베이스가 "더 나은" 것은 아닙니다.서로 다른 최적화 지점을 위해 설계된 서로 다른 응용프로그램입니다.

간단히 말해서:

  • 로컬 애플리케이션 데이터베이스, 단일 사용자 애플리케이션 및 소규모 데이터 SQLite를 유지하는 소규모 단순 프로젝트의 경우 가장 적합합니다.
  • 네트워크 데이터베이스 애플리케이션, 다중 사용자 및 동시성, 로드 밸런싱 및 증가하는 데이터 관리, 보안 및 롤 기반 인증, 대규모 프로젝트 및 널리 사용되는 서비스의 경우 MySql을 선택해야 합니다.

질문하신 것처럼 팀피크 서버와 데이터베이스에 실제로 보관해야 하는 데이터의 종류에 대해서는 잘 모르지만 로컬 DBMS만 필요하고 많은 동시성 및 관리를 처리할 필요가 없는 경우 SQLite를 선택할 수 있습니다.

언급URL : https://stackoverflow.com/questions/29452110/sqlite-faster-than-mysql

반응형