SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 06.04.2018 10:33:58

Siogun
Участник
Зарегистрирован: 06.04.2018
Сообщений: 5

Проверьте структуру базы данных

Здравствуйте.
Это мой первый опыт работы с MySQL.
Проверьте пожалуйста структуру базы данных,нет ли глобальных косяков, может можно её улучшить.

1) таблица с данными по температуре и влажности.
С "одной стороны" в неё регулярно капают данные, которые сохраняются с CURRENT_TIMESTAMP.
С "другой стороны" идет выборка последнего по дате, n последних по дате, все записи за период с ...  по ...
Соответствующие запросы:

"SELECT * FROM `temperature` ORDER BY date DESC  LIMIT ". $num
"SELECT * FROM `temperature` WHERE date BETWEEN ". $from . " AND " . $to. "ORDER BY date DESC"

http://n33692p3.beget.tech/temp/11.JPG

2)Ограничение размера базы
Хостинг beget выделяет 1 Гб на базу. Размер базы по phpMyAdmin сейчас 8,1 Мб, а в панели управления 16.38 Мб. Причем растёт прыжками по 1-4 Мб.
Как можно не допустить переполнения, как отследить что место закончилось?
P.S. Техподдержка от техподдержки отстранилась...

Отредактированно Siogun (06.04.2018 10:35:21)

Неактивен

 

#2 06.04.2018 11:39:55

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2420

Re: Проверьте структуру базы данных

1) лишь бы индекс на date был и все должно быть хорошо )
2)

SELECT table_name, table_rows, data_length, index_length,
round(((data_length + index_length) / 1024 / 1024),2) "Size in MB"
FROM information_schema.TABLES where table_schema = "schema_name";


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 06.04.2018 11:54:19

Siogun
Участник
Зарегистрирован: 06.04.2018
Сообщений: 5

Re: Проверьте структуру базы данных

Спасибо.
Запрос что-то ничего не выдал... Или в нем надо что-то подставить?
Я пробовал запрос

SELECT table_schema "database_name", sum( data_length + index_length )/1024/1024 "Data Base Size in MB" FROM information_schema.TABLES GROUP BY table_schema;

но он выдаёт те же 8,1 Мб

Может есть какой-то ответ от базы, что мол "невозможно добавить запись, нет места"?

Неактивен

 

#4 06.04.2018 13:54:09

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2420

Re: Проверьте структуру базы данных

А сколько же он должен выдать? Почему Вы не доверяете phpmyadmin'скому результату?


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#5 06.04.2018 14:06:42

Siogun
Участник
Зарегистрирован: 06.04.2018
Сообщений: 5

Re: Проверьте структуру базы данных

Почему же.... Очень доверяю.... Я не доверяю результату из панели управления хостинга... Там то показывается раза в 2-3 больше (причем от размера базы данных зависит непонятно как). И по какому из этих значений место ограничится тоже не понятно.
Потому и думал, когда место закончится, явно ж какую-то ошибку выбъет. и тогда уже подчистить старые записи.

Неактивен

 

#6 06.04.2018 16:07:40

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Проверьте структуру базы данных

Ограничения выставляет хостинг, поэтому логично ориентироваться на его показания.
Как вариант, разница может составлять всего несколько мегов, из-за малого размера базы кажется, что отличие в разы. Если с ростом базы ситуация не нормализуется, уточняйте у хостера - откуда такие цифры.

Покажите результат выполнения
show create table `temperature`;

Неактивен

 

#7 06.04.2018 16:24:26

Siogun
Участник
Зарегистрирован: 06.04.2018
Сообщений: 5

Re: Проверьте структуру базы данных

Спасибо.

CREATE TABLE `temperature` (
`date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`temperature` float NOT NULL,
`humidity` float NOT NULL,
PRIMARY KEY (`date`),
UNIQUE KEY `date` (`date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='База данных по температуре'

Неактивен

 

#8 06.04.2018 16:35:51

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Проверьте структуру базы данных

PRIMARY KEY (`date`),
UNIQUE KEY `date` (`date`)

создает 2 одинаковых индекса
выполните
drop index `date` on `temperature`;
или используйте панель пхпадмина для удаления второго индекса

Неактивен

 

#9 06.04.2018 16:45:30

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Проверьте структуру базы данных

вам точно нужен datetime для `date`?
может подойдет timestamp?

Неактивен

 

#10 06.04.2018 16:58:42

Siogun
Участник
Зарегистрирован: 06.04.2018
Сообщений: 5

Re: Проверьте структуру базы данных

точно.. так лучше

CREATE TABLE `temperature` (
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`temperature` float NOT NULL,
`humidity` float NOT NULL,
PRIMARY KEY (`date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='База данных по температуре'

стало 7,1 (15,3) Мб
Грасиас!!!

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson