lock tables

clevel

Новичок
lock tables

у меня есть временная таблица stat_view, в которой я храню промежуточные данные во время формирования контента.
Для того, чтобы не смешались данные для разных пользователей, которые могут одновременно запросить страничку с данным алгоритмом формирования, хотелось бы ее блокировать для других пользователей на время выполнения скрипта.
Для этих целей я использовал следующие запросы к БД:
mysql_query("LOCK TABLES stat_view write");
...............
mysql_query("UNLOCK TABLES");
при добавлении этих запросов у меня перестает формироваться контент, так как промежуточные запросы к этой таблице возвращают ноль... В чем проблема? ман прочитал, ответа для себя не нашел...
 

su1d

Старожил PHPClubа
по-моему временные (HEAP?) таблицы с одним и тем же именем - различны для каждого thread'а. если же ты "временную" таблицу создаёшь CREATE'ом, то надо продолжать читать... =)
 

chira

Новичок
Создавай таблицу как CREATE TEMPORARY TABLE

тогда каждая сессия будет видеть только свои данные в таблице.

и не нужно будет использовать LOCK
 

clevel

Новичок
Создавай таблицу как CREATE TEMPORARY TABLE
я создал таблицу (не временную) тип MYISAM
для фомирования страницы я заношу туда временные данные, делаю из них выборку, задел все от-туда удаляю.
Если использовать CREATE TEMPORARY TABLE, добавляются операции по созданию таблицы, ее удалению. Насколько они велики?
 

chira

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

для создания используется один SQL оператор CREATE TEMPORARY TABLE

если нужно продублировать структуру существующей таблицы то :
CREATE TEMPORARY TABLE ..... SELECT * FROM exist_table WHERE 1=0

если тебя не остановят ограничения на HEAP таблицы , то для скорости используй их: TYPE=HEAP
 

clevel

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

mahoune

Guest
Утверждать не стану, но сессия это наверно от слов connect_database до слов disconnect :) Хотя ожидать можно чего угодно!
 
Сверху