[sql] Вопросы по БД

Discussion in 'PHP' started by FraiDex, 25 Feb 2008.

Thread Status:
Not open for further replies.
  1. tester_new

    tester_new Elder - Старейшина

    Joined:
    12 Feb 2012
    Messages:
    300
    Likes Received:
    45
    Reputations:
    24
    Вот как я собственно пробую:

    SELECT last_activity, login FROM
    online WHERE
    (MINUTE(last_activity) < MINUTE(CURTIME()) AND (HOUR(last_activity)) = HOUR(CURTIME()))
    OR
    (MINUTE(last_activity) > MINUTE(CURTIME()) AND HOUR(last_activity) < HOUR(CURTIME()))

    Каждый пользователь посредством Ajax "пингуеться" И в поле last_activity записуеться текущяя дата получения "пинга" (Ajax запроса)
    Задача: Вывести пользователей у которых в поле last_activity время меньше хотябы на 1 минуту от текущего времени.
    С учетом ситуации когда ответ от пользователя получин в 09:59:59 т.е при проверки в 10:00:00 через 1 секунду.. такое пользователь будет тоже выведен.
    хотя прошла только одна секунда.
    Нужно верно реализовать учетом полночи.


    время храниться в формате (ч:м:c)
    пишу их туда CURTIME()


    Нашел вариант проще чуть но он не работает )

    SELECT login FROM online WHERE last_activity < subdate(CURTIME(), INTERVAL 1 MINUTE)
     
  2. exzi11

    exzi11 Member

    Joined:
    4 Feb 2011
    Messages:
    18
    Likes Received:
    6
    Reputations:
    0
    Ребят, подскажите. Ставлю Drupal на Denver.
    На шаге "Установка переводов2 выдает SQLSTATE[42S02]: Base table or view not found: 1146 Table 'mybase.languages' doesn't exist
    как поправить?

    если ошибся темой, не бейте сильно)
     
  3. Art!P

    Art!P Elder - Старейшина

    Joined:
    22 Jan 2008
    Messages:
    169
    Likes Received:
    28
    Reputations:
    5
    Пока попробуй создать таблу languages в базе. Если не поможет переустанавливай друпал.
     
  4. Art!P

    Art!P Elder - Старейшина

    Joined:
    22 Jan 2008
    Messages:
    169
    Likes Received:
    28
    Reputations:
    5
    А если записывать и хранить время (last_activity) в формате NOW()+0 то можно легко делать выборку:
    SELECT login FROM online WHERE last_activity>NOW()-60;
    ЗЫ. ошибься NOW()+0
     
    #1644 Art!P, 8 Mar 2012
    Last edited: 8 Mar 2012
  5. tester_new

    tester_new Elder - Старейшина

    Joined:
    12 Feb 2012
    Messages:
    300
    Likes Received:
    45
    Reputations:
    24

    попробую! постестирую :)
    А почему вот > а не < я не пойму...нужно выбрать тех у кого Ajax запросом это поле не обновлялось как минимум 1 мин.
     
  6. Art!P

    Art!P Elder - Старейшина

    Joined:
    22 Jan 2008
    Messages:
    169
    Likes Received:
    28
    Reputations:
    5
    ну да, ну да ) Думал нужны самые активные пользователи.
    Эх, сегодня я крайне не внимательный =)
     
  7. Kruzak

    Kruzak New Member

    Joined:
    21 Dec 2010
    Messages:
    126
    Likes Received:
    4
    Reputations:
    1
    задача такая - нужно чтобы в случае отказа винта не потерять из бд ни одной записи.
    сейчас бэкап в облако каждые 15 минут, но это не то - при отказе винтов данные за последние <15 минут будут потерянны.
    как быть? я так понимаю мне нужно реализовать mysql репликацию? это сложно? гуглил, что то геморно.
    и еще вариант я так думаю RAID на 4 винта, но пока такой возможности нет...
    как данные хранятся в банках? вебмани, пэйпал как хранит свои бд?
     
  8. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Kruzak
    High-Avaliability кластеры

    Ммм, 4 харда для вас дорого, а вторая машина - нормально? Сделайте обычный RAID 0 на новеньких хардах и вам этого хватит за глаза
     
    _________________________
  9. Art!P

    Art!P Elder - Старейшина

    Joined:
    22 Jan 2008
    Messages:
    169
    Likes Received:
    28
    Reputations:
    5
    Gifts написал верно. Кластерные системы. Очень стабильная среда даже если один сервер выйдет из строя данные восстанавливаются автоматически. Это потому что вся информация дублируется в пределах всего кластера. Также решается вопрос нагрузки, его балансирования, быстрая замена и апгрейд железа. Очень удобно.
    Сейчас все приличные скулы имеют кластерные возможности. MSSQL, PostgreSQL, MySQL, Oracle. Кому что по карману ;)
     
  10. Kruzak

    Kruzak New Member

    Joined:
    21 Dec 2010
    Messages:
    126
    Likes Received:
    4
    Reputations:
    1
    второй машиной можно поставить дешевый vds
    RAID 0 это ведь не зеркало, в случае отказа одного из винтов часть данных будет потерянна
     
    #1650 Kruzak, 10 Mar 2012
    Last edited: 10 Mar 2012
  11. НTL

    НTL Elder - Старейшина

    Joined:
    26 Jan 2008
    Messages:
    715
    Likes Received:
    205
    Reputations:
    -26
    Как в MySQL сделать следующие?
    Есть 3 столбца
    A, B и C
    Как сделать так что бы в C всегда была сумма A и B?

    Если в MySQL это невозможно, то в какой СУБД это можно сделать?
     
  12. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    http://habrahabr.ru/blogs/mysql/37693/
    Необходимо создать триггер на добавление нового поля
     
    2 people like this.
  13. Art!P

    Art!P Elder - Старейшина

    Joined:
    22 Jan 2008
    Messages:
    169
    Likes Received:
    28
    Reputations:
    5
    в команде INSERT делать сумму.
    Если таблица уже есть то апдейт
    UPDATE mytable SET c=a+b;
     
  14. НTL

    НTL Elder - Старейшина

    Joined:
    26 Jan 2008
    Messages:
    715
    Likes Received:
    205
    Reputations:
    -26
    Chaak, спс. То что нужно
    Art!P, не подходит
     
  15. Kruzak

    Kruzak New Member

    Joined:
    21 Dec 2010
    Messages:
    126
    Likes Received:
    4
    Reputations:
    1
    подскажите что за фигня

    скрипты работающие с mysql долго грузятся почти всегда нет ошибки mysql но значения не получает скрипт, через раз выходят значения
    phpmyadmin при этом работает нормально
    // перезагрузил, вроде все норм

    но все таки хотел бы узнать что это было
     
    #1655 Kruzak, 12 Mar 2012
    Last edited: 12 Mar 2012
  16. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    Надо код смотреть
     
  17. felix_v26

    felix_v26 New Member

    Joined:
    19 Mar 2011
    Messages:
    20
    Likes Received:
    0
    Reputations:
    0
    1.когда запускаешь show processlist некоторые запросы которые посылает php скрипт, обрезаны на середине, из за чего такое может быть?

    2. INSERT работает одинаково быстро если таблица 300 мб или размер таблици пару кб ??


    UPDATE
    проблема была в том, что таблица выросла, много select и update. и все остальные процессы висели.
    решением было
    расставить правильные индексы
    немного оптимизировать запросы из php
     
    #1657 felix_v26, 13 Mar 2012
    Last edited: 17 Mar 2012
  18. InfectedM

    InfectedM Elder - Старейшина

    Joined:
    4 Nov 2007
    Messages:
    155
    Likes Received:
    12
    Reputations:
    0
    Подскажите пожалуйста,как лучше реализовать следующую задачу на sql

    Вообщем есть таблица гараж, в ней есть колонка nomer_s и айдишник гаража.
    Номер гаража и идишник разные вещи . Нужно сделать именно так.
    Допустим имеем уже заполненую таблицу:

    (!)Всего номеров гаражей может быть 9999 , пользователь должеен выбрать номер из этого диапазаона (от 1 до 9999)
    мы уже использовали 10-ть номеров.
    значит пользователю нужно дать понять что выбирать можно только из этих 9989 (9999-10)
    Но списком указывать - как то не очень....
    Нужно сделать диапазоны.
    тоесть после запроса должен вернутся результат:

    подскажите плиз как можно сформировать список диапазонов не используеемых номеров?
     
  19. Art!P

    Art!P Elder - Старейшина

    Joined:
    22 Jan 2008
    Messages:
    169
    Likes Received:
    28
    Reputations:
    5
    Либо таймаут вэб-сервера
    Либо таймаут в PHP или что-то режет может быть режет модуль типа Suhosin

    INSERT хорошо работает с мелкими таблицами, из-за кэширование внутренних процессов, кэшированная запись на диск. Когда загружаете большие данные (точнее большой файл) скорость заметно будет ниже. Ну может первую секунду быстро а дальше как железо может. Скорость не высокая при записи большого кол-ва файлов в БД.
    Можно разделять большие файлы на сегменты (блоб-блоки) надежность записи выше, докачки. Но скорость ниже.
    Проблема собственно описана в умных книжках и толковых сайтах где разрабы съели стаю собак.
     
  20. Donet

    Donet New Member

    Joined:
    11 Apr 2011
    Messages:
    22
    Likes Received:
    0
    Reputations:
    0
    У меня есть база данных типа:
    Code:
    id  name      class
    1   Bogdan     3
    2   Vetaly     4
    
    как изменить в столбце class число 3 на 5 не изменяя целый ряд {1, Bogdan, 3}

    Есть команда что отображает клетку
    PHP:
    $q mysql_query("SELECT * FROM customer");
    echo 
    mysql_result($q02); 
    где {0,2} координаты клетки с числом "3".

    Сори затупил это;
    PHP:
    $q mysql_query("UPDATE customer SET class='5' WHERE id='1'");
     
    #1660 Donet, 16 Mar 2012
    Last edited: 16 Mar 2012
Thread Status:
Not open for further replies.