저는 주로 읽기 전용이 될 것이므로 제가 만들고있는 웹 사이트에 myisam 테이블을 사용하고 있습니다. 그리고 그것이 myisam이 더 좋을 것이라고 생각하는 이유입니다. 그러나 나는 데이터베이스에 사용자 세션을 저장하고 있습니다. 그래서 모든 단일 페이지 요청에서 세션 테이블에 대한 select + 업데이트를 의미합니다. 세션과 함께 이제 테이블에 1/1의 읽기/쓰기가 생기고 세션에서 무언가를 업데이트해야한다면 쓰기가 더 높아질 수 있습니다. 그런 테이블에 innodb를 사용해야합니까? 또는 1/1의 읽기/쓰기 비율이 여전히 myisam에 문제가 있습니까?세션을위한 InnoDB 또는 MyISAM?
답변
의 MyISAM 원시 체육의 측면에서 종종 빠른 이노보다에 엔진을 직렬화 변화 rformance (대부분 ACID가 아니기 때문에). 따라서 MyISAM 에 액세스하면 InnoDB보다 적은 리소스을 소비합니다.
한편 MyISAM은 테이블 수준 잠금 만 지원합니다. 동시성이 높은 환경에서는 대기 시간이 길어집니다. 그러나 수십 개의 간단한 쿼리가 너무 많은 문제를 야기해서는 안됩니다. 대부분의 쿼리가 간단하다고 가정하면 SELECT session_data FROM session_table WHERE session_id = <some_id>
입니다.
반대로, InnoDB는 더 견고합니다. InnoDB 테이블이 손상되는 것은 사실상 불가능하며, 성능면에서의 차이는 점점 더 중요하지 않게되는 경향이 있습니다 (예 : this benchmark 참조). 어떤 사람들은 MyISAM을 계속 사용하는 이유가 거의 없다고 주장 할 것입니다 (InnoDB가 v5.5의 기본 스토리지 엔진이되었습니다).
"더 빠름"에 대해보다 명확한 답변을 제공하지 못해 죄송합니다. 성능 최적화와 관련하여 항상 그렇듯이 실제 테스트가 수행되어야합니다. 엔진을 아주 쉽게 전환 할 수 있다는 것을 명심하십시오 (ALTER TABLE t ENGINE=[MyISAM | InnoDB]
). 나는 시도하고 볼 것을 제안합니다.
예상 트래픽을 고려해 볼 때 하나 또는 다른 트래픽을 사용하면 큰 차이가 없어야합니다.
전환하기는 쉽지만 자동 증가와 같은 일부 기능은 두 엔진에서 다르게 작동합니다. innodb에 대한 교착 상태 감지는 말할 것도 없습니다. "어느 것이 더 빠릅니다"에 관해서는 - 모든 것이 초 단위가 아닌 초 단위로 실행되는 한 실제로는 상관하지 않습니다. 그리고 너무 많은 시간이 지나면 풀 테이블 잠금 장치로 인해 myisam이 시작될 수도 있습니다. 어쨌든, 귀하의 의견을 주셔서 감사합니다, 나는 당신의 마지막 문장이 내 질문에 꽤 잘 대답한다고 생각합니다 :) – Marius
당신은 많은 옵션을 가지고 있었다 (내가이 상황에 대한 높은 트래픽을 정의하는 것조차 확실하지 않다하더라도)와 MySQL이 가장 좋은 하나가 아닌 응용 프로그램은 높은 트래픽이 없습니다 : 디스크
- 저장의 하드웨어 RAID가 있으면 좋은 옵션이고 복제에는 적합하지 않습니다.
- Mysql - 예 및 아니오 이전에 Mysql-Myisam과 50 명의 사용자가 테이블을 사용했습니다. 그래서 당신이 필요로하는 경우에 당신은 MEMORY (HEAP)" 표 "를 사용할 수 있습니다
- PHP + 확장 같은 일부 언어를 가지고 자신의 세션 저장 EQ WinCache Session Handler - 수동
- 가장 인기있는 Php+memcached session
- 당신도 사용 할 수 있기를 들어, 세션 저장 SQLite는 할 수 있습니다. 나에게 가장 좋은 옵션은 MongoDB의 세션 저장 || REDIS-SESSION-PHP
- 어떤 사람들은 "igbinary는"더 나은 성능 에 대한
나는 실제로 '둘 다'라고 말하고 싶습니다. 성능에 대해 걱정한다면 두 가지 모두 너무 느립니다. MEMORY (엔진) 또는 Memcached/Redis (메모리 내 스토리지가있는 다른 RDBMS)를 사용하십시오. – raina77ow
내장 된 PHP 세션이 지원하지 않는 세션으로 무엇을하고 싶습니까? – RandomSeed
@RandomSeed ... db에 저장하십시오. 세션에 대한 질문이 아니며 스토리지 엔진에 대한 질문입니다. 세션이 가장 좋은 예이지만 1/1과 같은 비율을 갖는 유일한 상황은 아닙니다. 여기에서 주제를 벗어나지 않겠습니다. – Marius