たくさんのテキストを含むMySQLDBを持っています。ウェブサイトからデータを取得し、それをテーブルに挿入しています。
DBにSSDHD(100GB)を使用していますが、スペースが足りません。テーブル構造の何かが大きすぎたと思います。すべての列のサイズを予測できないため、使用しています。ほとんどのフィールドのvarchar\text\mediumテキスト。すべてのデータをDBに挿入すると、エラーが監視され、特定のフィールドが挿入しようとしているデータに対して小さすぎることがわかった場合、フィールドのサイズを大きくしています(たとえば、varchar(1000)からvarchar(2000))。
今までは約180万行ありましたが、何かおかしいと思います。
これが私のテーブルの構造です-
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で複数のテーブルに分割する必要がありますか?最後に、スフィンクスを使用してデータのインデックス作成とクエリを行います。