>  기사  >  백엔드 개발  >  1억개의 데이터를 100개의 테이블로 분할하여 MySQL 데이터베이스(PHP)로 만드는 방법_php 스킬

1억개의 데이터를 100개의 테이블로 분할하여 MySQL 데이터베이스(PHP)로 만드는 방법_php 스킬

WBOY
WBOY원래의
2016-05-16 20:09:281136검색

다음은 100개의 테이블을 생성하여 1억 개의 데이터에 대한 테이블 분할 과정을 보여줍니다. 자세한 내용은 아래 코드를 참조하세요.

데이터 양이 급격히 증가하면 누구나 데이터 읽기 및 쓰기 속도를 최적화하기 위해 라이브러리 테이블 해싱과 같은 방법을 선택하게 됩니다. 저자는 1억 개의 데이터를 100개의 테이블로 나누어 간단한 시도를 했습니다. 구체적인 구현 과정은 다음과 같습니다.

먼저 100개의 테이블을 만듭니다.

 $i=0;
 while($i<=99){
 echo "$newNumber \r\n";
 $sql="CREATE TABLE `code_".$i."` (
 `full_code` char(10) NOT NULL,
 `create_time` int(10) unsigned NOT NULL,
 PRIMARY KEY (`full_code`),
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8";
 mysql_query($sql);
 $i++; 

테이블 분할 규칙에 대해 이야기하겠습니다. full_code가 기본 키로 사용됩니다.

기능은 다음과 같습니다.

$table_name=get_hash_table('code',$full_code);
function get_hash_table($table,$code,$s=100){
$hash = sprintf("%u", crc32($code));
echo $hash;
$hash1 = intval(fmod($hash, $s));
 return $table."_".$hash1;
} 

데이터를 삽입하기 전에 get_hash_table을 통해 데이터가 저장되어 있는 테이블 이름을 알아보세요.

마지막으로 병합 스토리지 엔진을 사용하여 완전한 코드 테이블을 구현합니다

CREATE TABLE IF NOT EXISTS `code` ( 
`full_code` char(10) NOT NULL,
`create_time` int(10) unsigned NOT NULL,
INDEX(full_code) 
) TYPE=MERGE UNION=(code_0,code_1,code_2.......) INSERT_METHOD=LAST ; 

이런 식으로 코드에서 * 선택을 통해 모든 full_code 데이터를 얻을 수 있습니다.

위 소개는 이 글의 전체 내용이므로 모든 분들께 도움이 되었으면 좋겠습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.