Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Блокировка таблиц не используя LOCK TABLES / 13 сообщений из 13, страница 1 из 1
27.12.2005, 08:45:51
    #33458575
dogma
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка таблиц не используя LOCK TABLES
Мой админ утверждает, что можно раздавать привилегии на блокировку таблиц не используя команду LOCK TABLES.
В общем смотрел я в документации и ничего похоже не нашел (плохо искал, ну у меня это обычное дело). Администратор говорит, что Раздавать эту привилегю юзерам опасно, потому, что они могут заблокировать таблицу из которой должны только выберать записи, а ведь блокировка у меня используется только перед добавлением, на довольно продолжительное время. Еще говорит, что сам реализовал подобное(т.е. у юзера имели привилегию SELECT на N-ое кол-во таблиц в базе при этом могли блокировать только < N таблиц ), но только как он это делал мне не сказал, да я и не спрашивал, наверняка не вспомнит.
Можете ли вы мне подсказать как это делается. Если такого не существует или не встречалось в вашей практике, то там и скажите, то за мои t-кол-во лет я такое не встречал :)
...
Рейтинг: 0 / 0
27.12.2005, 10:35:05
    #33458809
Валентин К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка таблиц не используя LOCK TABLES
SELECT ... FOR UPDATES;
...
Рейтинг: 0 / 0
28.12.2005, 05:01:15
    #33460779
Dinky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка таблиц не используя LOCK TABLES
http://dev.mysql.com/doc/refman/4.1/en/innodb-locking-reads.html
но тут _все_ селекты должны выполнятся FOR UPDATE, обычные селекты не будут блокированы

а зачем вообщем нужна блокировка?

мутит что-то админ :) к тому же можно создать специального юзера и/или дать права на конкретную таблицу...

--
Dmitry
...
Рейтинг: 0 / 0
28.12.2005, 08:12:15
    #33460859
dogma
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка таблиц не используя LOCK TABLES
Про For UPDATES я знаю, вот только эту команду можно юзать на таблицах типа InnoDB, а на MyISAM нет. Я использую MyISAM.
Так можно ли как-нибудь дать привилегию на блокировку таблицы именно на таблицу, а не на базу?
...
Рейтинг: 0 / 0
28.12.2005, 08:23:34
    #33460871
DocAl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка таблиц не используя LOCK TABLES
А вы можете объяснить, чего вы хотите добиться?
...
Рейтинг: 0 / 0
28.12.2005, 17:49:53
    #33462842
Dinky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка таблиц не используя LOCK TABLES
dogma
Так можно ли как-нибудь дать привилегию на блокировку таблицы именно на таблицу, а не на базу?
RTFM ;) "To use LOCK TABLES, you must have the LOCK TABLES privilege and the SELECT privilege for the involved tables."
для админа:
http://dev.mysql.com/doc/refman/5.0/en/grant.html

--
Dmitry
...
Рейтинг: 0 / 0
29.12.2005, 04:55:09
    #33463284
dogma
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка таблиц не используя LOCK TABLES
То, что это команда может использоваться только на таблицах их которых юзер может делать выбору я знаю (читал руководство) и объяснял это админу. Но он похоже слишком упертый или я не прав. Он говорит, что юзер может заблокировать табличку "А" из которой должен делать только выборку. При этом этот же юзер должен блокировать таблицы находящиеся в тойже базе, где и таблица "А".
...
Рейтинг: 0 / 0
29.12.2005, 04:59:59
    #33463285
dogma
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка таблиц не используя LOCK TABLES
to DocAl
В базе находятся таблицы типа MyISAM.
Так вот - юзер имеет привилегию Select на 15 таблиц из этой базы, при этом он должен блокировать только 3 их них. Как этого добиться?
...
Рейтинг: 0 / 0
29.12.2005, 10:59:20
    #33463689
VoDA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка таблиц не используя LOCK TABLES
dogmato DocAl
В базе находятся таблицы типа MyISAM.
Так вот - юзер имеет привилегию Select на 15 таблиц из этой базы, при этом он должен блокировать только 3 их них. Как этого добиться?
А зачем нужно вообще блокировать таблицы? и вообще блокировать в Вашем случае?
...
Рейтинг: 0 / 0
30.12.2005, 08:47:53
    #33465319
dogma
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка таблиц не используя LOCK TABLES
блокировка используется при добвлении записей.
В таблице есть поле ,котору увеличивается на 1 при добавление каждой записи следующим образом.
дата | счетчик
...
29-12-2005| 567
30-12-2005| 568
31-12-2005| 569
01-01-2006| 1
02-01-2006| 2
.....
29-12-2006| 600
30-12-2006| 601
31-12-2006| 602
01-01-2007| 1
02-01-2007| 2
.....
Т.е. сброс происходит первого числа каждого года
...
Рейтинг: 0 / 0
30.12.2005, 08:56:13
    #33465328
dogma
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка таблиц не используя LOCK TABLES
Забыл добавить.
Следующее значение инкрементного (если можно так сказать) вычисляется из ризультата запроса Select max(inc_f) from table1.
Т.к. с таблицей работают несколько юзеров одновременно, то существует вероятность внесения записей с одинаковым значением. Чтобы этого не случилось я и делаю блокировку.
...
Рейтинг: 0 / 0
30.12.2005, 09:42:04
    #33465387
DocAl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка таблиц не используя LOCK TABLES
Э... А в чём глубокий смысл этой денормализации?
...
Рейтинг: 0 / 0
30.12.2005, 19:13:33
    #33466342
Dinky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка таблиц не используя LOCK TABLES
а не проще ли сразу запускать запрос:
UPDATE table SET counter=counter+1 WHERE date=curdate();
безо всякого селекта
--
Dmitry
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Блокировка таблиц не используя LOCK TABLES / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]