Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Как реализовать уникальный индекс для keywords в url_alias при использовании PARTITION BY HASH ?


Recommended Posts

2 минуты назад, chukcha сказал:

INSERT into oc_url_alias_clone (query,keyword) SELECT query, keyword FROM oc_url_alias_clone2

 

oc_url_alias_clone - эта должна быть пустая!!!
 

 

oc_url_alias_clone2  - в этой  все что было в url_alias

точно протупил :)) заработался

 

Надіслати
Поділитися на інших сайтах


Только что, php сказал:

если хотите убрать дыры url_alias_id

то это можно сделать так


SET @i = 0;
UPDATE `os_url_alias` SET `url_alias_id` = (@i := @i + 1) ORDER BY `url_alias_id` ASC;

 

я хочу чтоб кейвордс был уникален и при выгрузке если оно заполнено- не создавало дубль. пока так. попробую все варианты. забыл крон отключить -дублей наплодило уже. щас жду пока бекап базы откатится

Надіслати
Поділитися на інших сайтах


4 минуты назад, php сказал:

если хотите убрать дыры url_alias_id

то это можно сделать так


SET @i = 0;
UPDATE `os_url_alias` SET `url_alias_id` = (@i := @i + 1) ORDER BY `url_alias_id` ASC;

 

Задача - не убрать дыры

И..  автоинкремент останенся большим
 

Надіслати
Поділитися на інших сайтах

1 минуту назад, chukcha сказал:

И..  автоинкремент останенся большим

ALTER TABLE `os_url_alias` AUTO_INCREMENT = 0;

 

Надіслати
Поділитися на інших сайтах


1 час назад, chukcha сказал:

INSERT into oc_url_alias_clone (query,keyword) SELECT query, keyword FROM oc_url_alias_clone2

 

oc_url_alias_clone - эта должна быть пустая!!!
 

 

oc_url_alias_clone2  - в этой  все что было в url_alias

такс. вроде все получилось

проверил-дублей нет. запустил крон выгрузки. ждемс результата

 

Вы писали "Если у вас синхронизация - частая и долгая, то оставить innodb
иначе майИсам"  - не подскажите как мне это сделать? как переключить на innodb?

 

сейчас так https://clip2net.com/s/49OKRn8

Змінено користувачем Dimasscus
Надіслати
Поділитися на інших сайтах


Вообщем дичь какая то. После того как переделал таблицу и добавил уник для кейворд- тупо не пишет их при вигрузке. Вообще

 

upd

разобрался. для скрипта использовались отдельные таблицы в бд, в которых хранился last_product_id  с помощью которого срипт должен был стартовать с последнего товара . почистил-все заработало. 

всем огромное спасибо за подсказки и поддержку

Змінено користувачем Dimasscus
Надіслати
Поділитися на інших сайтах


10 часов назад, Dimasscus сказал:

е подскажите как мне это сделать? как переключить на innodb?

alter table oc_url_alias engine InnoDb

или в phpmyadmin найти такую возможность

Надіслати
Поділитися на інших сайтах

Только что, chukcha сказал:

alter table oc_url_alias engine InnoDb

или в phpmyadmin найти такую возможность

спасибо. пока вроде бд шустро работает

Надіслати
Поділитися на інших сайтах


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

Надіслати
Поділитися на інших сайтах

3 минуты назад, chukcha сказал:

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

частота обновления цен остатков фоток-раз в 5 минут по 50 к позиций за проход

частота добавления новых товаров- раз в час по 500 штук

но я больше переживал о тормозах на самом сайте -в пользовательской части при просмотре товаров категорий и тд

все таки товаров 520к

Надіслати
Поділитися на інших сайтах


Вам нужно пересмотреть процесс синхронизации, через дополнительные таблицы

 

Т.е. все полученные данные укладывать  в нее
А затем одним апдейтом обновить
Тем самым вы уменьшаете количество блокировок, перестроения индексов

 

Надіслати
Поділитися на інших сайтах

1 минуту назад, chukcha сказал:

Вам нужно пересмотреть процесс синхронизации, через дополнительные таблицы

 

Т.е. все полученные данные укладывать  в нее
А затем одним апдейтом обновить
Тем самым вы уменьшаете количество блокировок, перестроения индексов

 

думаю об этом. там вообще все странно. 1 скрипт добавляет товары в опенкарт, но без категорий и урл, а также колво 0

второй скрипт привязывает категории

3 скрипт картинки обновляет и атрибуты

4 -статусы, колво., цену и урл. 

такая вообщем каша

 

Надіслати
Поділитися на інших сайтах


23 часа назад, chukcha сказал:

Вам нужно пересмотреть процесс синхронизации, через дополнительные таблицы

 

Т.е. все полученные данные укладывать  в нее
А затем одним апдейтом обновить
Тем самым вы уменьшаете количество блокировок, перестроения индексов

 

вообщем такая фигня- до 9 с хвостиком килотоваров добежали резво. а потом - крон запускается и через минуту стопает. товары не добавляет. 

не подскажите что это может быть?

Надіслати
Поділитися на інших сайтах


59 минут назад, Dimasscus сказал:

вообщем такая фигня- до 9 с хвостиком килотоваров добежали резво. а потом - крон запускается и через минуту стопает. товары не добавляет. 

не подскажите что это может быть?

Кончилось процессорное время :)

Надіслати
Поділитися на інших сайтах

19 минут назад, chukcha сказал:

Кончилось процессорное время :)

єто лечится как то? все же связано с бд я так понимаю и нужно переделать синхронизацию?

Надіслати
Поділитися на інших сайтах


27 минут назад, chukcha сказал:

как вы запускаете скрипт?

кроном раз в час через /usr/bin/wget -O - -q -t 1 

хостер ответил что превышения процессорного нет, ограничений тоже нет, скрипт отрабатывает и закрывается. а вот почему не обновляет- хз.

до того как я убрал эти патришены- все работало, но как помните- лепило дубли сео урл. теперь дублей нет. но и выгрузка стала.

в попытках разобраться нашел такой участок кода 

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://tvoy.top/upload_xml/kenshi_XML_create.php?update_quantity=1');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36');
curl_exec($ch);
curl_close($ch);

$result = mysqli_query($link, "SELECT value FROM kenshi_line WHERE name = 'products_create'");

while ($row = mysqli_fetch_array($result, MYSQL_NUM)) {
    if ($row[0]!='') {
        $tovv_id = $row[0];
    }
}

$result2 = mysqli_query($link, "SELECT value FROM kenshi_line WHERE name = 'products_quantity'");

while ($row2 = mysqli_fetch_array($result2, MYSQL_NUM)) {
    if ($row2[0]!='') {
        $tovv_id2 = $row2[0];
    }
}


if ($tovv_id >= $tovv_id2) {
    mysqli_query($link, "UPDATE kenshi_line SET value = '0' WHERE name = 'products_create'");
}

mysqli_close($link);

$currect_line = $tovv_id;
$max_line = $currect_line + 10000;//10000;
$currect_product = 0;

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

но вот в саму таблицу ни чего не пишется. там ранее были данные- я их дропнул, так удалил все товары и начал импорт заново, потому что урл в бд было в 3 раза больше чем товаров.

 

Надіслати
Поділитися на інших сайтах


ну.. выж понимаете что здесь я вам не помошник

вы конечно можете откатить бекап таблицы
и проверить, ноя не думаю, что проблема в этом

Надіслати
Поділитися на інших сайтах

Только что, chukcha сказал:

ну.. выж понимаете что здесь я вам не помошник

вы конечно можете откатить бекап таблицы
и проверить, ноя не думаю, что проблема в этом

частично разобрался

в таблицу products_quantity выгружает фактическое колво товара в прайсе на текущий момент

в таблицу products_create -кол во товаров на сайте.

проверяет и если не равно- то грузит далее

если равно- то апдейтит и в таблице ставит ноль. 

буду смотреть дальше

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.