2016-08-17 6 views
-1

나는 아래 지금 파이썬에서 캐싱하고 데이터를 바이트. 이것을 dict를 사용하고 delimiter를 사용하여 data-str에 미리 붙이면 파이썬에 최적으로 저장하면 항목 당 RAM 비용이 ~ 198 바이트가됩니다. 이것은 내가 필요로하는 캐시의 크기에 비해 상당히 큽니다.MySQL의 계산 RAM의 B + 트리의 풋 프린트 (파이썬 데이터 구조체와 비교)

RAM 공간을 절약 할 수 있는지 알아보기 위해 MySQL 테이블에 같은 것을 저장하려고합니다. (즉, 내가 지금 가지고있는 기능) RAM에

id timestamp data-string 
4B  4B 
<---- PK ----> 

내가 MySQL은 InnoDB의 테이블의 인덱스를로드 할 것을 이해 : 그렇게하는 동안, 나는이로 저장합니다. 따라서 id (unique), timestamp 및 데이터 문자열에 대한 포인터가 RAM에 상주합니다.

이 새로운 테이블에 대해서만 MySQL의 B + Tree에 대한 전체 RAM 사용량 (예 : 메타 데이터 포함)을 어떻게 계산합니까?

답변

1

변수, 패딩 등이 너무 많아서 디스크 디스크 공간과 InnoDB BTree가 얼마나 많은 양을 소비하는지 추정하는 것은 비실용적입니다. 당신이 인용 한 2 배는 꽤 좋습니다. buffer_pool은 RAM에 캐시이므로, BTree가 디스크처럼 많은 RAM 공간을 소비한다고 말할 수 없습니다. 캐싱은 16KB 블록에 있습니다.

(@의 EC5 인덱스 (들)의 디스크현재 크기에 대한 좋은 정보를 가지고 있습니다.)