많은 텍스트가 포함 된 MySQL DB가 있습니다. 웹 사이트에서 데이터를 가져 와서 테이블에 삽입하고 있습니다.MySQL 테이블 디자인/아키텍처 테이블이 너무 큽니다.
DB에 SSD HD (100GB)를 사용하고 있는데 공간이 부족합니다. 테이블 구조에서 무언가가 너무 커서 모든 항목의 크기를 예측할 수 없으므로 나는 대부분의 필드에 대해 varchar \ text \ medium 텍스트를 사용하고 있습니다. DB에 모든 데이터를 삽입 할 때 오류를 모니터링하고 특정 필드가 너무 작아서 필드의 크기를 늘리려 고합니다 (예 : varchar (1000)에서 varchar (2000)).
지금까지 약 1.8M ~ 행이 있는데, 나는 뭔가 잘못하고 있다고 생각합니다.
CREATE TABLE `PT` (
`patID` int(11) NOT NULL,
`Title` varchar(450) DEFAULT NULL,
`IssueDate` date DEFAULT NULL,
`NoFullText` tinyint(1) DEFAULT NULL,
`Abstract` text,
`ForeignReferences` varchar(15000) DEFAULT NULL,
`CurrentUSClass` varchar(2200) DEFAULT NULL,
`OtherReferences` mediumtext,
`ForeignPrio` varchar(900) DEFAULT NULL,
`CurrentIntlClass` varchar(3000) DEFAULT NULL,
`AppNum` varchar(45) DEFAULT NULL,
`AppDate` date DEFAULT NULL,
`Assignee` varchar(300) DEFAULT NULL,
`Inventors` varchar(1500) DEFAULT NULL,
`RelatedUSAppData` text,
`PrimaryExaminer` varchar(100) DEFAULT NULL,
`AssistantExaminer` varchar(100) DEFAULT NULL,
`AttorneyOrAgent` varchar(300) DEFAULT NULL,
`ReferencedBy` text,
`AssigneeName` varchar(150) DEFAULT NULL,
`AssigneeState` varchar(80) DEFAULT NULL,
`AssigneeCity` varchar(150) DEFAULT NULL,
`InventorsName` varchar(800) DEFAULT NULL,
`InventorsState` varchar(300) DEFAULT NULL,
`InventorsCity` varchar(800) DEFAULT NULL,
`Claims` mediumtext,
`Description` mediumtext,
`InsertionTime` datetime NOT NULL,
`LastUpdatedOn` datetime NOT NULL,
PRIMARY KEY (`patID`),
UNIQUE KEY `patID_UNIQUE` (`patID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
어떻게해야합니까 - 여기
내 테이블의 구조인가? 데이터의 약 20 % (350GB ~ 공간이 필요함) 성능에 미치는 영향은 무엇입니까? 여러 HD를 통해 테이블을 여러 테이블로 나누어야합니까? 마지막으로 스핑크스를 사용하여 데이터를 색인하고 쿼리합니다.
테이블 구조가 아니라 데이터의 양입니다. 테이블 구조는 varchars 및 텍스트 유형 열을 주로 사용하며 텍스트를 저장하고 끝에 추가 된 1 바이트 (또는 2 바이트)를 사용하여 텍스트 크기를 기록합니다. 즉, varchar (1500)은 mediumtext 열을 사용하는 것과 같습니다. 또 다른 문제는 MyISAM이 데이터 저장을 처리하는 방법과 테이블 공간을 조각내는 방법입니다. 전문가는 아니지만 많은 텍스트를 저장해야하는 경우 테이블 구조를 "최적화"할 수 없습니다. –
대부분의 큰 텍스트 청크는 mediumtext \ text 열에 저장됩니다. 텍스트는 \ mediumtext라는 텍스트를 볼 수 있습니까? 다른 DB 엔진을 사용해야합니까? – YSY
[MyISAM 내부 참조] (http://forge.mysql.com/wiki/MySQL_Internals_MyISAM). –