집 >데이터 베이스 >MySQL 튜토리얼 >MySQL에서 IPv6 주소를 효율적으로 저장하는 방법: DECIMAL(39,0) 대 VARBINARY(16)?
MySQL에서 IPv6 주소를 효율적으로 저장하는 것은 어려울 수 있습니다. 일반적으로 사용되는 두 가지 방법에는 두 개의 BIGINT 필드 또는 DECIMAL(39,0) 필드를 사용하는 것이 있습니다.
DECIMAL(39,0)의 장점과 단점
DECIMAL( 39,0)은 2*BIGINT에 비해 여러 가지 장점을 제공합니다.
그러나 DECIMAL(39,0)에는 몇 가지 단점도 있습니다.
2진수에서 10진수로 및 그 반대로 변환
inet_pton()이 반환한 2진수 형식을 MySQL에서 사용할 수 있는 10진수 문자열 형식으로 변환하려면 다음 PHP를 사용할 수 있습니다. 함수:
<code class="php">function binaryToDecimal($binary) { $hex = bin2hex($binary); return gmp_strval(gmp_init($hex, 16), 10); }</code>
10진수 문자열을 2진수로 다시 변환하려면 다음 함수를 사용하세요.
<code class="php">function decimalToBinary($decimal) { $hex = gmp_strval(gmp_init($decimal), 16); return hex2bin($hex); }</code>
IPv6 주소에 대한 스토리지 최적화
DECIMAL(39,0)을 사용하는 대신 더 효율적인 옵션은 VARBINARY(16) 열을 사용하고 inet_pton() 및 inet_ntop() 함수를 활용하여 변환하는 것입니다. 이 접근 방식은 MySQL 5.6 이상에서 지원되며 컴팩트함과 성능상의 이점을 모두 제공합니다.
위 내용은 MySQL에서 IPv6 주소를 효율적으로 저장하는 방법: DECIMAL(39,0) 대 VARBINARY(16)?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!