2009-05-15 5 views
1

이 질문과 관련이없는 이유로 일부 프로젝트의 경우보다 일반적인 MySQL 대신 여러 SQLite 데이터베이스를 실행해야하므로 SQLite를 MySQL과 비교할 때 SQL과 비교하는 방법을 알고 싶습니다 디스크 I/O에 관한 성능은 입니다 (데이터베이스는 USB 2.0 펜 드라이브에서 호스트 됨).MySQL 대 SQLite + UNIQUE 인덱스

데이터베이스 속도 비교 페이지 (http://www.sqlite.org/speed.html)를 읽었는데 SQLite의 성능에 놀랐지 만 그 벤치 마크가 조금 오래 되었기 때문에 좀 더 업데이트 된 벤치 마크 (SQLite 3 vs MySQL 5)를 찾고있었습니다. , 다시 내 주요 관심사는 디스크 성능, CPU/RAM이 아닙니다입니다.

또한 SQLite에 대한 많은 경험이 없기 때문에 InnoDB MySQL 엔진의 TRIGGER (업데이트, 삭제) 이벤트와 유사한 것이 있으면 궁금합니다. 나 또한 필드가 MySQL과 같은 UNIQUE로 선언하는 방법을 찾지 못했습니다. PRIMARY KEY - 누락 된 것이 있습니까?

좋은 질문 (무료 또는 오픈 소스가 좋음) SQLite 데이터베이스 관리자가 있는지 궁금합니다. 거기

+2

당신은 마지막 질문을 새로운 질문으로 모두 분리해야합니다. – ninesided

+2

당신은 아마도 MySQL이 SQLite보다 더 일반적이라고 생각하는 것으로 오인되었을 것입니다. http://www.sqlite.org/mostdeployed.html을 참조하십시오. –

+0

와우! 정말 멋진 SQLite의 힘! :) –

답변

7

몇 가지 질문 :

  1. I/O 제한 디스크의 측면에서, 나는 데이터베이스 엔진이 차이가 많이 만드는 상상하지 않을 것입니다. 몇 가지 작은 것들이있을 수 있지만, 대부분 데이터베이스가 응용 프로그램이 원하는만큼 빨리 데이터를 읽고 쓸 수 있는지 여부라고 생각합니다. MySQL이나 SQLite에서 같은 양의 데이터를 사용하기 때문에별로 변하지 않을 것이라고 생각합니다.
  2. SQLite는 트리거를 지원하지 않습니다 : CREATE TRIGGER Syntax
  3. SQLite는 UNIQUE 제약 조건을 지원합니다 : column constraint definition syntax.
  4. 내 SQLite 데이터베이스를 관리하기 위해 Firefox 추가 기능 SQLite Manager을 사용합니다. 그것은 아주 좋습니다. 내가 원하는 모든 것을합니다. 디스크 I/O 제한의 측면에서
+1

이것은 꽤 철저합니다. 관리자는 SQLiteman (sqliteman.com/)을 살펴볼 것입니다. 몇 가지 성가신 측면이 있습니다 (예를 들어, 열려있는 SQL 파일을 수정할 때마다 이미 열려 있더라도 새 대화 상자가 나타납니다). 그러나 이것은 크로스 플랫폼이며 주요 기능 (임의의 SQL 실행, 테이블 검사 및 수정,보기 작성 및 실행 등)을 제공합니다. –

+0

고마워요! =) 좋은 답변입니다! –

+4

차이점은 MySQL이 가능한 한 모든 것을 RAM에 캐시한다는 것입니다. Sqlite는 데이터베이스를 항상 언로드해야합니다 (사실 앱 재시작). MySQL은 I/O를 적게 사용하기 위해 디스크에서 데이터를 많이 길게 캐싱 할 수 있습니다. 모든 서버 시스템이이를 수행합니다. –

2

, 나는 데이터베이스 엔진이 차이가 많이 만드는 상상하지 않을 것입니다.

데이터가 UNORDERED로 저장되어 있으므로 RANGE가 ON 일 때 PRIMARY KEY는 이론적으로 여러 개의 HDD SEEK 작업을 실행해야합니다.

Mysql/InnoDB에서 데이터는 PRIMARY KEY로 정렬되므로 ON ON ON 프라이 머리 키는 하나의 DISK SEEK 연산 (이론적으로)을 사용하여 수행됩니다.

총계 : myISAM - 데이터는 순서가 지정되지 않은 HDD에 기록됩니다. pri 키가 AUTO INCREMENT 고유 필드가 아닌 경우 느린 PRI-KEY 범위를 읽습니다.

InnoDB - 플래시 드라이브에 대해 데이터 정렬이 잘못됨 (삽입 = 추가 쓰기 후에 데이터를 다시 정렬해야 함). PRI KEY 범위 읽기는 매우 빠르며 쓰기는 느립니다.

InnoDB는 플래시 메모리에 적합하지 않습니다. 검색은 매우 빠르므로 (데이터를 재정렬하면 많은 이익을 얻지 못할 것입니다.) 주문을 유지하는 데 필요한 추가 기록은 플래시 메모리를 손상시킵니다.

myISAM/innoDB는 기존 및 플래시 드라이브 (SQLite는 무엇인지 모르겠다)에 큰 차이가 있지만, mysql/myisam을 사용하고 싶습니다.

1

실제로 SQLite 인터페이스로 SQLiteSpy http://www.portablefreeware.com/?id=1165을 사용하는 것이 좋습니다. REGEXP와 같은 것을 지원합니다.

+0

그게 내 질문에 무슨 상관이 있습니까? –

+3

"마지막 질문으로 좋은 SQL (선호 무료 또는 오픈 소스) SQLite 데이터베이스 관리자가 있는지 알고 싶습니다." – NikoRoberts