저는 MySQL 전문가가 아니며 문제가 있습니다. 나는 현재 16GB의 데이터를 저장하고 더 성장할 수있는 테이블을 가지고있다.MySql 성능 제안
,인텔 제온, 내 서버 구성 아래에 주어진 테이블의 구조는
CREATE TABLE `t_xyz_tracking` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT, `word` VARCHAR(200) NOT NULL, `xyzId` BIGINT(100) NOT NULL, `xyzText` VARCHAR(800) NULL DEFAULT NULL, `language` VARCHAR(2000) NULL DEFAULT NULL, `links` VARCHAR(2000) NULL DEFAULT NULL, `xyzType` VARCHAR(20) NULL DEFAULT NULL, `source` VARCHAR(1500) NULL DEFAULT NULL, `sourceStripped` TEXT NULL, `isTruncated` VARCHAR(40) NULL DEFAULT NULL, `inReplyToStatusId` BIGINT(30) NULL DEFAULT NULL, `inReplyToUserId` INT(11) NULL DEFAULT NULL, `rtUsrProfilePicUrl` TEXT NULL, `isFavorited` VARCHAR(40) NULL DEFAULT NULL, `inReplyToScreenName` VARCHAR(40) NULL DEFAULT NULL, `latitude` BIGINT(100) NOT NULL, `longitude` BIGINT(100) NOT NULL, `rexyzStatus` VARCHAR(40) NULL DEFAULT NULL, `statusInReplyToStatusId` BIGINT(100) NOT NULL, `statusInReplyToUserId` BIGINT(100) NOT NULL, `statusFavorited` VARCHAR(40) NULL DEFAULT NULL, `statusInReplyToScreenName` TEXT NULL, `screenName` TEXT NULL, `profilePicUrl` TEXT NULL, `xyzId` BIGINT(100) NOT NULL, `name` TEXT NULL, `location` VARCHAR(200) NULL DEFAULT NULL, `bio` TEXT NULL, `url` TEXT NULL COLLATE 'latin1_swedish_ci', `utcOffset` INT(11) NULL DEFAULT NULL, `timeZone` VARCHAR(100) NULL DEFAULT NULL, `frenCnt` BIGINT(20) NULL DEFAULT '0', `createdAt` DATETIME NULL DEFAULT NULL, `createdOnGMT` VARCHAR(40) NULL DEFAULT NULL, `createdOnServerTime` DATETIME NULL DEFAULT NULL, `follCnt` BIGINT(20) NULL DEFAULT '0', `favCnt` BIGINT(20) NULL DEFAULT '0', `totStatusCnt` BIGINT(20) NULL DEFAULT NULL, `usrCrtDate` VARCHAR(200) NULL DEFAULT NULL, `humanSentiment` VARCHAR(30) NULL DEFAULT NULL, `replied` BIT(1) NULL DEFAULT NULL, `replyMsg` TEXT NULL, `classified` INT(32) NULL DEFAULT NULL, `createdOnGMTDate` DATETIME NULL DEFAULT NULL, PRIMARY KEY (`id`), INDEX `id` (`id`, `word`), INDEX `word_index` (`word`) USING BTREE, INDEX `classified_index` (`classified`) USING BTREE, INDEX `createdOnGMT_index` (`createdOnGMT`) USING BTREE, INDEX `location_index` (`location`) USING BTREE, INDEX `word_createdOnGMT` (`word`, `createdOnGMT`), INDEX `timeZone` (`timeZone`) USING BTREE, INDEX `language` (`language`(255)) USING BTREE, INDEX `source` (`source`(255)) USING BTREE, INDEX `xyzId` (`xyzId`) USING BTREE, INDEX `getunclassified_index` (`classified`, `xyzType`) USING BTREE, INDEX `createdOnGMTDate_index` (`createdOnGMTDate`, `word`) USING BTREE, INDEX `links` (`links`(255)) USING BTREE, INDEX `xyzType_classified` (`classified`, `xyzType`) USING BTREE, INDEX `word_createdOnGMTDate` (`word`, `createdOnGMTDate`) USING BTREE )COLLATE='utf8_general_ci' ENGINE=InnoDB ROW_FORMAT=DEFAULT AUTO_INCREMENT=17540328
이 테이블에 쿼리
지금 천천히 실행하고, 아래되고 나는 그들이 더 둔화 할 것으로 예상하고있다 E5220의 @의 2.27GHz (2 개 프로세서) 12기가바이트 램 윈도우 2008 서버 R2의 my.ini 파일 세부 사항은 아래와 같습니다
- 은 MyISAM 테이블 도움말을 변환겠습니까성능을 개선하기 위해 무엇을 할 수 있는지
,이 테이블은 자주 쓰기가 더욱 자주 읽고 있기 때문에, 나는 INNODB 있습니다.default-storage-engine=INNODB sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" max_connections=300 query_cache_size=0 table_cache=256 tmp_table_size=205M thread_cache_size=8 myisam_max_sort_file_size=3G myisam_sort_buffer_size=410M key_buffer_size=354M read_buffer_size=64K read_rnd_buffer_size=256K sort_buffer_size = 64M join_buffer_size = 64M thread_cache_size = 8 thread_concurrency = 8 query_cache_size = 128M innodb_additional_mem_pool_size=15M innodb_flush_log_at_trx_commit=1 innodb_log_buffer_size=30M innodb_buffer_pool_size=6G innodb_log_file_size=343M innodb_thread_concurrency=44 max_allowed_packet = 16M slow_query_log long_query_time = 6
- 나는 당신이있어 같은 I/O를 20-40메가바이트/초만큼 높은 시간에
덕분에, Rohit
느린 쿼리에 대한 정보가 필요합니다. 이 테이블에 인덱스가 있습니까? –
또한 이러한 쿼리의 EXPLAIN 출력도 유용 할 수 있습니다. – hometoast
여기에서 시작하십시오 - >>> http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html. –