단일 항목 당 얼마나 많은 오버 헤드가 필요한지 아는 사람 있습니까? 1 바이트 키를 삽입하면 'stats'명령은 항목 당 65 바이트가 소비되는 것을 보여줍니다.Memcached item overhead
예상 되 고 수정 되었습니까?
감사합니다, 표트르
단일 항목 당 얼마나 많은 오버 헤드가 필요한지 아는 사람 있습니까? 1 바이트 키를 삽입하면 'stats'명령은 항목 당 65 바이트가 소비되는 것을 보여줍니다.Memcached item overhead
예상 되 고 수정 되었습니까?
감사합니다, 표트르
예, Memcache의 자체 데이터 구조는 항목 당 50 바이트 이상을 차지합니다. 그것은 당신의 데이터와 키에 조금 의존하기 때문에, 64 비트 머신에서 60 바이트 이상을 가정하십시오. https://github.com/memcached/memcached/blob/master/memcached.h
다음 항목을 구성하는 작업은 다음과 같습니다 : memcache에의 코드에서 볼 때
하나는 볼 수
/**
* Structure for storing items within memcached.
*/
typedef struct _stritem {
struct _stritem *next;
struct _stritem *prev;
struct _stritem *h_next; /* hash chain next */
rel_time_t time; /* least recent access */
rel_time_t exptime; /* expire time */
int nbytes; /* size of data */
unsigned short refcount;
uint8_t nsuffix; /* length of flags-and-length string */
uint8_t it_flags; /* ITEM_* above */
uint8_t slabs_clsid;/* which slab class we're in */
uint8_t nkey; /* key length, w/terminating null and padding */
/* this odd type prevents type-punning issues when we do
* the little shuffle to save space when not using CAS. */
union {
uint64_t cas;
char end;
} data[];
/* if it_flags & ITEM_CAS we have 8 bytes CAS */
/* then null-terminated key */
/* then " flags length\r\n" (no terminating null) */
/* then data with terminating \r\n (no terminating null; it's binary!) */
} item;
3 포인터가 있습니다을하는 64 비트 컴퓨터의 합에 최대 3 * 8 = 24 바이트. 그곳에는 32 비트가되어야하는 두 개의 시간 스탬프가 있으므로 총 8 바이트를 만듭니다. 다음 int는 8 바이트 여야하고 short는 2이어야하며 u_int8은 단일 바이트 여야하므로 14까지 합계가됩니다.
이렇게하면 총 46 바이트가됩니다.
CAS 8 바이트까지 추가 64 비트 CAS 값가 활성화 인 경우 총
54 바이트 이제 지저분 : 이하의 플래그, 데이터의 길이를 소수로 인쇄 된 문자 데이터이며 (코드는 https://github.com/memcached/memcached/blob/master/items.c, 줄 80에서 찾을 수 있습니다). 플래그가 "0"키는 하나 개의 문자입니다, 데이터가 비어 있음을 감안할 때,이 있습니다 :
가능한 가장 작은 memcache 항목 크기 (64 비트)에서 64 바이트를 사용합니다 (CAS를 활성화 한 경우 -C 옵션을 사용하여 비활성화 할 수 있습니다).
65 바이트를 얻으면 클라이언트가 "10"또는 그와 같은 플래그를 설정했을 수 있습니다.
그것은 항목 클래스에 따라 다르며, 더 나은에 맞게 응용 프로그램을 구성 할 수 있습니다. 가장 좋은 방법은 많은 것을 저장하고 캐시 속도를 모니터링하는 것입니다. 응용 프로그램 성능이 저하되면 조정할 수 있습니다.