나는 라스베리 파이 (laspberry Pi)를 사용하여 1-Wire 센서로 수집 된 가정용 온도 데이터를 기록했습니다. 데이터는 수년 동안 모두 MySQL 데이터베이스로 수집되었습니다. 나는 Raspbian 배포본과 기본 MySQL 설정을 사용한다. 이제 백만 건이 넘는 테이블이 있고 Pi는 쿼리를 매우 느리게 실행합니다.저 사양 시스템의 lrge 테이블에서 MySQL 성능을 향상 시키려면 어떻게해야합니까?
+--------------+----------+------+-----+---------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+----------+------+-----+---------------------+-------+
| timeRecorded | datetime | NO | PRI | 0000-00-00 00:00:00 | |
| sensorName | char(3) | NO | PRI | | |
| tempValue | float | YES | | NULL | |
+--------------+----------+------+-----+---------------------+-------+
I는 온도에 대한 날짜 및 시간, 3 문자 이름 및 센서 값을 기록한다 : 여기
는 TemperatureRecords 테이블에 대한 설명이다. 특정 센서의 현재 (최근) 온도를 선택하는 쿼리와 그날 가장 높은 온도를 선택하는 쿼리의 두 가지 쿼리를 실행하고 싶습니다.현재 온도 예 :
SELECT ROUND(tempValue, 1) as tempValue
FROM TemperatureRecords
WHERE DATE(timeRecorded) = '2015-01-20' AND HOUR(timeRecorded) = '20' AND sensorName = 'abc'
ORDER BY timeRecorded DESC LIMIT 1;
최고 온도 예 :
SELECT MAX(tempValue)
FROM TemperatureRecords
WHERE DATE(timeRecorded) = '2015-01-20' AND sensorName = 'abc';
불행하게도이 난에서 데이터를 검색 할 특히, 너무 느린이다, 완료 10-20 초 정도 걸릴 수 있습니다 한 번에 웹 페이지에 여러 센서를 표시 할 수 있습니다.
나는 테이블에 추가 인덱스를 추가하려고 시도했지만 개선되지 않았으므로 어쨌든 인덱스를 완전히 이해할 수 있는지 확신 할 수 없습니다. /usr/share/doc/mysql-server-5.5/examples/my-small.cnf에있는 작은 시스템에서 MySQL 구성을 사용해 보았습니다. 성능은 향상되지만 좋지는 않습니다.
MySQL에 대한 지식이 어느 정도 기본입니다. 지금 내 데이터가 너무 커지거나 내 설정을 향상시키기 위해 할 수있는 일이 있습니까?
예. RANGE 쿼리를 사용해보십시오 – Strawberry