|
|
|
|
|
для: sd607
(08.11.2006 в 01:07)
| | История у вас не подвергается изменениям? Только для чтения? Тогда её можно раздробить на множество таблиц (например, по дате, связка за 2005, 2004, 2003 и т.п. годы). Каждая из таблиц будет иметь разумный объём и может обслуживаться независимо. | |
|
|
|
|
|
|
|
для: cheops
(07.11.2006 в 22:16)
| | А запросы как ни крутил, не придумал каким образом приспособить к выборке из многотабличной структуры (структуру, которую не придумал как разбить на доп. таблицы см. ниже).
Все же поторопился я с закрытием темы.
Таблицы предназначены для хранения моих злополучных сообщений, таковых две:
Первая:
CREATE TABLE messages(
id int(11) NOT NULL auto_increment,
from_id int(11) NOT NULL,
to_id int(11) NOT NULL,
msg_id int(11) NOT NULL,
readstatus tinyint(1) DEFAULT 0,
PRIMARY KEY (id)
)
|
И вторая:
CREATE TABLE messages_text(
id int(11),
message TEXT,
postdate DATETIME,
PRIMARY KEY (id)
)
|
Связь идет по msg_id = id. Сам же запрос думаю так же легко представить. Сорт делаю по id по убыванию.
Если предложите каким образом можно сделать разбивку и запрос на выборку из такой структуры на несколько таблиц:
messages0
messages1
messages2
...
messages_text0
messages_text1
messages_text2
...
Буду бесконечно благодарен.
На текущий момент у меня таких связок две. Первая хранит свежие сообщения: около 1 млн. строк. Вторая историю: около 2 млн. строк. | |
|
|
|
|
|
|
|
для: sd607
(07.11.2006 в 16:06)
| | Добавлю лишь, что InnoDB может работать надёжнее MyISAM, но скорость при этом может падать и в 2 и 4 и в 7 раз... У вас что за таблица, нет возможности её разбить на несколько или ввести репликационный сервер? | |
|
|
|
|
|
|
|
для: sd607
(07.11.2006 в 16:06)
| | Всем спасибо. Поспешил. Нашел ответы на этом форуме. | |
|
|
|
|
|
|
| Сразу два вопроса в одном:
1.
Есть таблица на 1 млн. записей. Размер таблицы 80 мб. Ожидаймое кол-во записей до 4 млн. Имеет ли смысл эту тяжесть перебросить с MyISAM на InnoDB. (в таблице присутствует три типа полей: int(11), varchar и datetime, выборка производится исключительно по полям int)
2.
Есть две таблицы. Данные добавляются следующим образом:
1. Добавляю строку в таблицу 1, получаю с нее last_id.
2. Добавляю строку в таблицу 2 и присваиваю одному из полей значение last_id
Возникла проблема, не всегда идет добавление в таблицу 2 либо с другим last_id. Поможет ли переход на InnoDB и подключение транзакций. Если да, пожалуйста, приведите код на php добавления с помощью последних.
И сразу тогда, как можно будет определить успешность завершения транзакции?
ps На сайте мускула где-то вычитал, что InnoDB успешно обрабатывает в среднем 800 обращений (выборка, апдейт, вставка, удаление) в секунду. Мне этого более чем. Это на случай если кто-то будет говорить о замедлении скорости обработки по сравнению с MyISAM.
На сервере 4-ый мускль. | |
|
|
|
|