|
|
|
| Есть таблица мускула, 5-6 милионов товаров.
Нужен совет, как лучше поделить на например на 20 таблиц по 250 тыс товаров или оставить все в одной таблице.??
помогите пожалуйста, никогда с такими большими таблицами ничего не делал.
как оптимизировать базу?
наперед спасибо. | |
|
|
|
|
|
|
|
для: Okey
(16.09.2008 в 18:35)
| | Откуда столько? | |
|
|
|
|
|
|
|
для: Okey
(16.09.2008 в 18:35)
| | >5-6 милионов товаров
Обалдеть! Что хоть за товары?
Думаю, если уж так, то лучше переходить на Oracle. | |
|
|
|
|
|
|
|
для: Okey
(16.09.2008 в 18:35)
| | Если сервер выделенный, можно посмотреть в сторону MySQL 5.1 - начиная с этой версии доступна сегментация, т.е. виртуально таблица у вас будет одна, но поделена она будет на 20 (или сколько захотите) файлов. | |
|
|
|
|
|
|
|
для: cheops
(17.09.2008 в 00:05)
| | это система сравнения цен. потому так много товаров.
так вручную нужно делить? | |
|
|
|
|
|
|
|
для: Okey
(17.09.2008 в 11:11)
| | а есть проблемы? | |
|
|
|
|
|
|
|
для: ronin80
(17.09.2008 в 11:18)
| | при 2 мил страница на локалце висит...
а можна ище ифнормации о фрагментации в мускуле 5.1 | |
|
|
|
|
|
|
|
для: Okey
(17.09.2008 в 11:54)
| | >при 2 мил страница на локалце висит...
на какой странице? вы что столько записей выводите из базы? | |
|
|
|
|
|
|
|
для: ronin80
(17.09.2008 в 12:08)
| | нет даные в базе, но мне нужно например 100 записей напечатать, когда страница обращается к базе....висит ))) | |
|
|
|
|
|
|
|
для: Okey
(17.09.2008 в 12:18)
| | >нет даные в базе, но мне нужно например 100 записей напечатать, когда страница обращается к базе....висит )))
сам с таким объёмом не работал, но думаю тут всё зависит от запроса и структуры таблицы (индексы и т.п.). сейчас занимаюсь оптимизацией запросов к бд для ускорения работы программы, удаётся повысить работу программы в разы, много не оптимальных запросов и т.д.
у нас на предприятии есть производственные сиситемы и не с таким объёмом данных и ничего, работают без каких либо разбивок таблиц | |
|
|
|
|
|
|
|
для: ronin80
(17.09.2008 в 12:45)
| | А можна несколько примерчиков, до и после? | |
|
|
|
|
|
|
|
для: Okey
(17.09.2008 в 13:00)
| | правильнее было бы если бы вы показали текст запроса, структуру таблицы (SHOW CREATE TABLE) и время выполнения запроса
тут правда ещё много подводных камней типа настроек сервера, но по крайней мере уже можно о чём то говорить, а примеров запросов море, сложно так сказать | |
|
|
|
|
|
|
|
для: ronin80
(17.09.2008 в 14:11)
| | для примера
CREATE TABLE `produkts` (
`id` int(11) NOT NULL auto_increment,
`from_xml` int(11) NOT NULL default '0',
`sid` int(11) NOT NULL default '0',
`zid` int(11) default NULL,
`name` varchar(100) default NULL,
`description` text,
`category` int(11) default NULL,
`url` varchar(150) default NULL,
`image` varchar(150) default NULL,
`price` float default NULL,
`producer` varchar(100) default NULL,
`data` datetime default NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM | |
|
|
|
|
|
|
|
для: Okey
(17.09.2008 в 11:54)
| | Собственно разбивают таблицы при помощи оператора CREATE TABLE ... SELECT ... - создают копии, потом удаляют из исходной таблицы лишние строки.
>а можна ище ифнормации о фрагментации в мускуле 5.1
Собственно сегментации посвящен 16 раздел мануала MySQL 5.1. Если смущает английский язык, она также освещена в нашей книге "MySQL на примерах". | |
|
|
|