세션 변수를 저장하기 위해 MySQL을 사용하고 싶습니다. 내가 이해하는 바로는 이것은 모든 페이지 요청마다 하나의 읽기와 하나의 쓰기가 테이블에 있음을 의미합니다.PHP 세션 저장에 가장 적합한 MySQL 스토리지 엔진
이 작업에 가장 적합한 MySQL 스토리지 엔진은 무엇입니까? MyISAM, InnoDB, MariaDB (PHPMyAdmin에는 표시되지 않음), 메모리 또는 완전히 다른 것이 있습니까?
세션 변수를 저장하기 위해 MySQL을 사용하고 싶습니다. 내가 이해하는 바로는 이것은 모든 페이지 요청마다 하나의 읽기와 하나의 쓰기가 테이블에 있음을 의미합니다.PHP 세션 저장에 가장 적합한 MySQL 스토리지 엔진
이 작업에 가장 적합한 MySQL 스토리지 엔진은 무엇입니까? MyISAM, InnoDB, MariaDB (PHPMyAdmin에는 표시되지 않음), 메모리 또는 완전히 다른 것이 있습니까?
은 "베스트"아무런 의미가 없습니다. 제약 조건을 표현해야합니다. 일관성이 필요합니까? 내구성? 고 가용성? 공연? 이러한 모든 속성의 조합? 세션을 풀어 볼 여유가 있습니까? 그들은 기억에 적응할 수 있습니까? 동일한 데이터에 대한 동시 액세스를 지원해야합니까?
더 이상의 컨텍스트가 없으면 가장 균형 잡힌 스토리지 엔진 인 InnoDB를 선택합니다. OLTP 응용 프로그램, ACID 트랜잭션, 양호한 안정성 및 합리적인 동시성 관리에 대해 정확한 성능을 제공합니다. 세션 변수 액세스는 기본 키를 사용하여 수행 될 가능성이 높습니다.이 작업은 InnoDB에서 매우 효율적입니다.
성능이 실제로 제약 조건이라면, 차라리 MySQL이 아닌 NoSQL 엔진을 사용하고 싶습니다. 세션 데이터를 저장하기 위해 보통 Redis은 매우 훌륭하게 작업하며 통합 및 배포하기가 쉽습니다.
의 MyISAM 가장 일반적인 (많은 공유 호스팅 패키지는 당신의 MyISAM을 사용하자)입니다 :
메모리 저장 엔진이 가장 좋은 옵션입니다. 임시 세션에는 유용합니다.
http://dev.mysql.com/doc/refman/5.0/en/memory-storage-engine.html
엔진이 디스크에 데이터를 쓰지 않고 서버가 메모리를 공유하지 않기 때문에로드 밸런서를 사용하면 문제가되지 않습니까? 또한 서버가 다운되거나 다시 시작되면 모든 데이터가 손실됩니까? – qwertymk
그것은 당신이 "betterness을"평가 방법에 따라 달라집니다. 또한 관계 제어 측면에서는 다소 제한적이기 때문에 실제로 빠르고 쉽게 설정할 수 있습니다. 여러 호스팅 시나리오에서 이식성과 빠른 구현을 원한다면 MYISAM이 가장 좋습니다.
InnoDB를 사용하면 서로 다른 테이블의 키를 연결하여 관계를 만들고 SaveGuard 데이터 무결성을 만들 수 있습니다. 이는 더 많은 작업을하지만 훨씬 전문적인 db 디자인을 의미합니다. 많은 공유 호스팅 패키지는 InnoDB를 구현하지 않으므로 한 환경에서 다른 환경으로 테이블 구조를 내보낼 때 추가 작업이 필요할 수 있습니다. 당신이 현실주의 관리 및 통제를 원하면 INNODB IS BEST가 가장 좋습니다.
데이터 이식성에 관한 한, MyISAM은 데이터 무결성을 검사하지 않기 때문에 MyISAM에 의해 완전히 수용 될 것입니다. "user_car에 새 레코드를 삽입 할 때 사용자 데이터베이스에 사용자 번호 4가 있습니까? 예를 들어 "). MyISAM으로 시작한다면, 데이터가 모든 키를 가지고 있더라도, 본질적인 InnoDB 데이터베이스로 내보내기는 악몽 일 것입니다. 테이블 데이터는 올바른 순서 (user_car 이전에 사용자와 자동차)로 가져와야합니다.
MariaDB? MyISAM과 InnoDB에 비해 지원이 적을 것입니다.
하단 라인 클린 처 : INNODB.
SQL 연결에서 오버 헤드가 발생하지 않는다면 MemCached 세션 sorage를 사용해보십시오. http://php.net/manual/en/memcached.sessions.php
우수 답변. –