Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Разбить большую таблицу на несколько маленьких
 
 автор: Okey   (16.09.2008 в 18:35)   письмо автору
 
 

Есть таблица мускула, 5-6 милионов товаров.
Нужен совет, как лучше поделить на например на 20 таблиц по 250 тыс товаров или оставить все в одной таблице.??

помогите пожалуйста, никогда с такими большими таблицами ничего не делал.
как оптимизировать базу?

наперед спасибо.

  Ответить  
 
 автор: Trianon   (16.09.2008 в 18:54)   письмо автору
 
   для: Okey   (16.09.2008 в 18:35)
 

Откуда столько?

  Ответить  
 
 автор: AcidTrash   (16.09.2008 в 22:42)   письмо автору
 
   для: Okey   (16.09.2008 в 18:35)
 

>5-6 милионов товаров
Обалдеть! Что хоть за товары?

Думаю, если уж так, то лучше переходить на Oracle.

  Ответить  
 
 автор: cheops   (17.09.2008 в 00:05)   письмо автору
 
   для: Okey   (16.09.2008 в 18:35)
 

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

  Ответить  
 
 автор: Okey   (17.09.2008 в 11:11)   письмо автору
 
   для: cheops   (17.09.2008 в 00:05)
 

это система сравнения цен. потому так много товаров.

так вручную нужно делить?

  Ответить  
 
 автор: ronin80   (17.09.2008 в 11:18)   письмо автору
 
   для: Okey   (17.09.2008 в 11:11)
 

а есть проблемы?

  Ответить  
 
 автор: Okey   (17.09.2008 в 11:54)   письмо автору
 
   для: ronin80   (17.09.2008 в 11:18)
 

при 2 мил страница на локалце висит...

а можна ище ифнормации о фрагментации в мускуле 5.1

  Ответить  
 
 автор: ronin80   (17.09.2008 в 12:08)   письмо автору
 
   для: Okey   (17.09.2008 в 11:54)
 

>при 2 мил страница на локалце висит...

на какой странице? вы что столько записей выводите из базы?

  Ответить  
 
 автор: Okey   (17.09.2008 в 12:18)   письмо автору
 
   для: ronin80   (17.09.2008 в 12:08)
 

нет даные в базе, но мне нужно например 100 записей напечатать, когда страница обращается к базе....висит )))

  Ответить  
 
 автор: ronin80   (17.09.2008 в 12:45)   письмо автору
 
   для: Okey   (17.09.2008 в 12:18)
 

>нет даные в базе, но мне нужно например 100 записей напечатать, когда страница обращается к базе....висит )))

сам с таким объёмом не работал, но думаю тут всё зависит от запроса и структуры таблицы (индексы и т.п.). сейчас занимаюсь оптимизацией запросов к бд для ускорения работы программы, удаётся повысить работу программы в разы, много не оптимальных запросов и т.д.

у нас на предприятии есть производственные сиситемы и не с таким объёмом данных и ничего, работают без каких либо разбивок таблиц

  Ответить  
 
 автор: Okey   (17.09.2008 в 13:00)   письмо автору
 
   для: ronin80   (17.09.2008 в 12:45)
 

А можна несколько примерчиков, до и после?

  Ответить  
 
 автор: ronin80   (17.09.2008 в 14:11)   письмо автору
 
   для: Okey   (17.09.2008 в 13:00)
 

правильнее было бы если бы вы показали текст запроса, структуру таблицы (SHOW CREATE TABLE) и время выполнения запроса

тут правда ещё много подводных камней типа настроек сервера, но по крайней мере уже можно о чём то говорить, а примеров запросов море, сложно так сказать

  Ответить  
 
 автор: Okey   (17.09.2008 в 17:00)   письмо автору
 
   для: 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

  Ответить  
 
 автор: cheops   (17.09.2008 в 12:25)   письмо автору
 
   для: Okey   (17.09.2008 в 11:54)
 

Собственно разбивают таблицы при помощи оператора CREATE TABLE ... SELECT ... - создают копии, потом удаляют из исходной таблицы лишние строки.

>а можна ище ифнормации о фрагментации в мускуле 5.1
Собственно сегментации посвящен 16 раздел мануала MySQL 5.1. Если смущает английский язык, она также освещена в нашей книге "MySQL на примерах".

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования