{"id":431,"date":"2009-12-21T13:27:34","date_gmt":"2009-12-21T10:27:34","guid":{"rendered":"http:\/\/blog.yavor.info\/?p=431"},"modified":"2009-12-21T13:33:19","modified_gmt":"2009-12-21T10:33:19","slug":"%d0%bd%d0%b5-%d1%81%d0%bc%d0%b5-%d1%81%d0%b0%d0%bc%d0%b8-%d1%87%d0%b0%d1%81%d1%82-5","status":"publish","type":"post","link":"http:\/\/blog.yavor.info\/?p=431","title":{"rendered":"\u041d\u0435 \u0441\u043c\u0435 \u0441\u0430\u043c\u0438, \u0447\u0430\u0441\u0442 5"},"content":{"rendered":"<p>(<a href=\"http:\/\/blog.yavor.info\/?p=430\">\u043a\u044a\u043c \u0447\u0430\u0441\u0442 4<\/a>)<\/p>\n<p>\u0421 \u043f\u0440\u0435\u0434\u0438\u0448\u043d\u0430\u0442\u0430 \u0447\u0430\u0441\u0442 \u043e\u0442 \u043f\u043e\u0440\u0435\u0434\u0438\u0446\u0430\u0442\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u0445 \u0435\u0434\u0438\u043d \u043c\u0430\u043b\u043a\u043e \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u043d \u0438 \u0434\u043e\u0441\u0442\u0430 \u043c\u043e\u0449\u0435\u043d \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0437\u0430 \u0437\u0430\u0449\u0438\u0442\u0430. \u0412 \u043f\u043e\u0432\u0435\u0447\u0435\u0442 \u0441\u043b\u0443\u0447\u0430\u0438 \u0442\u043e\u0439 \u0435 &#8222;\u043f\u0440\u0435\u043a\u0430\u043b\u0435\u043d\u043e&#8220; \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0430\u0432\u0430\u0449 (\u0445\u0430\u0440\u0435\u0441\u0432\u0430\u043c \u0442\u0435\u0440\u043c\u0438\u043d\u0430 <em>scalability inhibitor<\/em>). \u041d\u043e \u043c\u043e\u0436\u0435 \u0434\u0430 \u0441\u0435 \u043e\u043a\u0430\u0436\u0435 \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0432 \u0441\u043b\u0443\u0447\u0430\u0438, \u043a\u043e\u0433\u0430\u0442\u043e \u0435\u0434\u043d\u0438 \u0434\u0430\u043d\u043d\u0438 \u0441\u0435 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0430\u0442 \u043e\u0442 \u0442\u043e\u043a\u043e\u0432\u0430 \u043c\u043d\u043e\u0433\u043e \u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u0438 \u043c\u0435\u0441\u0442\u0430 \u043a\u043e\u0434\u0430, \u0447\u0435  \u043d\u0438\u043a\u043e\u0439 \u043d\u0435 \u0433\u0438 \u0437\u043d\u0430\u0435 \u0432\u0441\u0438\u0447\u043a\u0438\u0442\u0435 (\u0441\u043f\u0430\u0433\u0435\u0442\u0438).<\/p>\n<p>\u041e\u0431\u0440\u0430\u0442\u043d\u043e, \u043a\u043e\u0433\u0430\u0442\u043e \u0441\u0435 \u0437\u043d\u0430\u0435 \u0442\u043e\u0447\u043d\u043e \u043a\u043e\u0438 \u043f\u0430\u0440\u0447\u0435\u0442\u0430 \u043e\u0442 \u043a\u043e\u0434\u0430 \u0449\u0435 \u0434\u043e\u0441\u0442\u044a\u043f\u0432\u0430\u0442 \u0434\u0430\u043d\u043d\u0438\u0442\u0435, \u0441\u0435 \u0434\u0435\u0444\u0438\u043d\u0438\u0440\u0430\u0442 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u0438 \u0441\u0435\u043a\u0446\u0438\u0438. \u0417\u0430 \u0446\u0435\u043b\u0442\u0430 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430 \u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u043b\u0438\u0433\u0435\u043d\u0442\u043d\u043e \u0437\u0430\u043a\u043b\u044e\u0447\u0432\u0430\u043d\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u0442\u0430 \u043d\u0430 \u043f\u0430\u043a\u0435\u0442\u0430 dbms_lock. \u0422\u043e\u0437\u0438 \u043f\u0430\u043a\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u044f \u0432\u044a\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442 \u0434\u0430 \u0441\u0435 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0442 \u043f\u043e\u0437\u043d\u0430\u0442\u0438\u0442\u0435 \u043d\u0438 \u0432\u0433\u0440\u0430\u0434\u0435\u043d\u0438 \u0432 \u041eracle \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0438 \u0437\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0432\u0430\u043d\u0435, \u0437\u0430 \u0434\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0432\u0430\u043c\u0435 \u0434\u043e\u0441\u0442\u044a\u043f\u0430 \u0434\u043e &#8222;\u043d\u0430\u0448\u0438&#8220; \u0441\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u0438. \u041e\u0441\u043d\u043e\u0432\u043d\u043e \u043f\u0440\u0435\u0434\u0438\u043c\u0441\u0442\u0432\u043e \u043f\u0440\u0435\u0434 hand-made \u0437\u0430\u043a\u043b\u044e\u0447\u0432\u0430\u043d\u0438\u0446\u0438\u0442\u0435 \u0435, \u0447\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u0435 \u0434\u043e\u043a\u0430\u0437\u0430\u043d, \u0442\u0435\u0441\u0442\u0432\u0430\u043d, \u0436\u0435\u043b\u0435\u0437\u0435\u043d \u0438 \u043f\u043e\u0437\u043d\u0430\u0442. \u0417\u0430 \u0434\u0430 \u043c\u043e\u0436\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044f \u0434\u0430 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430 \u0442\u043e\u0437\u0438 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u044a\u043c, \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0438\u043c\u0430 \u043f\u0440\u0430\u0432\u0430 \u0437\u0430 \u0438\u0437\u043f\u044a\u043b\u043d\u0435\u043d\u0438\u0435 \u043d\u0430 dbms_lock.<\/p>\n<p>\u0415\u0442\u043e \u043c\u0430\u043b\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0435\u043d \u043a\u043e\u0434:<\/p>\n<pre lang=\"plsql\">\r\ncreate or replace procedure Process_New_Data is\r\n  lck_handle number;\r\n  lck_result binary_integer;\r\nbegin\r\n  -- preventing multiple sessions run the same code\r\n  DBMS_LOCK.ALLOCATE_UNIQUE(lockname => 'New_data_processing', lockhandle => lck_handle);\r\n  lck_result := DBMS_LOCK.REQUEST(lockhandle => lck_handle, lockmode => dbms_lock.X_MODE, timeout => 0,\r\n                                  release_on_commit => false);\r\n  \/* possible results:\r\n    0 - Success; 1 - Timeout; 2 - Deadlock; 3 - Parameter error; \r\n    4 - Already own lock specified by id or lockhandle; 5 - Illegal lock handle\r\n  *\/\r\n  if lck_result != 0 then\r\n    RAISE_APPLICATION_ERROR(-20115, 'Cannot allocate lock New_data_processing: ' || lck_result);\r\n  end if;\r\n\r\n  -- do wathever we want\r\n  loop \r\n    insert . . .;\r\n    delete . . .;\r\n    commit; -- we can do many transactions, the lock is defined with release_on_commit => false\r\n  end loop;\r\n  update . . .;\r\n  commit;\r\n\r\n  -- release the lock\r\n  lck_result := DBMS_LOCK.release(lockhandle => lck_handle);\r\n\r\nEXCEPTION\r\n  WHEN OTHERS THEN\r\n    -- we should always release the lock!!!\r\n    lck_result := DBMS_LOCK.release(lockhandle => lck_handle);\r\n    -- do whatever error handling we need\r\n    rollback;\r\n    insert into Processing_log\r\n      (time, module, action, error_msg, extra_data, status)\r\n    values\r\n      (sysdate, 'Process_New_Data', null,\r\n       DBMS_UTILITY.FORMAT_ERROR_STACK() || chr(13) ||\r\n       DBMS_UTILITY.FORMAT_ERROR_BACKTRACE(),\r\n       null, 'Error');\r\n    commit;\r\n    raise;\r\nend;\r\n<\/pre>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u0438\u0442\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u0438 \u0442\u0443\u043a \u0441\u0430:<\/p>\n<p>&#8211; \u0412 \u043d\u0430\u0447\u0430\u043b\u043e\u0442\u043e \u0441\u0438 \u0434\u0435\u0444\u0438\u043d\u0438\u0440\u0430\u043c\u0435 &#8222;\u0440\u0435\u0441\u0443\u0440\u0441&#8220;, \u043a\u043e\u0439\u0442\u043e \u0449\u0435 \u0437\u0430\u043a\u043b\u044e\u0447\u0432\u0430\u043c\u0435, \u0441 \u043f\u043e\u043c\u043e\u0449\u0442\u0430 \u043d\u0430 <code>DBMS_LOCK.ALLOCATE_UNIQUE<\/code><\/p>\n<p>&#8211; \u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u0430\u0432\u0438\u043c \u043e\u043f\u0438\u0442 \u0437\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0432\u0430\u043d\u0435 \u043d\u0430 \u0442\u043e\u0437\u0438 \u0440\u0435\u0441\u0443\u0440\u0441 \u0441 <code>DBMS_LOCK.REQUEST<\/code>. \u0422\u0443\u043a \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0441\u0435 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u0438 \u043d\u0438\u0432\u0430 \u043d\u0430 \u0437\u0430\u043a\u044e\u0447\u0432\u0430\u043d\u0435 (Shared, Exclusive, SubShared, SubExclusive, Shared SubExclusive).<br \/>\n\u041c\u043e\u0436\u0435 \u0434\u0430 \u0438\u0437\u0447\u0430\u043a\u0430\u043c\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e \u0432\u0440\u0435\u043c\u0435 (<code>timeout<\/code>) &#8211; \u0442\u043e\u0432\u0430 \u0435 \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u0430\u043a\u043e \u0441\u0435 \u043e\u0447\u0430\u043a\u0432\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u0430 \u0434\u0430 \u0431\u044a\u0434\u0435 \u0437\u0430\u043a\u043b\u044e\u0447\u0432\u0430\u043d \u0437\u0430 \u043a\u0440\u0430\u0442\u043a\u043e, \u0441\u043b\u0435\u0434 \u043a\u043e\u0435\u0442\u043e \u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u043c \u0434\u0430 \u0443\u0441\u043f\u0435\u0435\u043c \u0434\u0430 \u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043c.<br \/>\n\u0418\u043c\u0430 \u0438 \u043e\u0449\u0435 \u0435\u0434\u0438\u043d \u043c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u044f\u0442\u0435\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u044a\u0440: <code>release_on_commit<\/code>. \u0421 \u043d\u0435\u0433\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0432\u0430\u043c\u0435 \u0434\u0430\u043b\u0438 \u0437\u0430\u043a\u043b\u044e\u0447\u0432\u0430\u043d\u0435\u0442\u043e \u0434\u0430 \u0441\u0435 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0432\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u043f\u0440\u0438 \u043f\u0440\u0438\u043a\u043b\u044e\u0447\u0432\u0430\u043d\u0435 \u043d\u0430 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u0442\u0430 (\u043a\u0430\u043a\u0442\u043e \u043f\u0440\u0430\u0432\u044f\u0442 \u0432\u0441\u0438\u0447\u043a\u0438 \u043d\u043e\u0440\u043c\u0430\u043b\u043d\u0438 \u0437\u0430\u043a\u043b\u044e\u0447\u0432\u0430\u043d\u0438\u0446\u0438).<br \/>\n\u0415\u0434\u043d\u0430 \u0432\u0430\u0436\u043d\u0430 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442 \u0435, \u0447\u0435 \u043f\u0440\u0438 \u043d\u0435\u0443\u0441\u043f\u0435\u0445 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430\u0442\u0430 \u043d\u0435 \u0432\u0440\u044a\u0449\u0430 exception. \u0417\u0430 \u0442\u043e\u0432\u0430 \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0441\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0438 \u0440\u0435\u0437\u0443\u043b\u0442\u0430\u0442\u0430, \u043a\u043e\u0439\u0442\u043e \u0432\u0440\u044a\u0449\u0430.<\/p>\n<p>&#8211; \u0421\u043b\u0435\u0434 \u0442\u043e\u0432\u0430 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0441\u0435 \u043f\u0440\u0430\u0432\u0438 \u0432\u0441\u0438\u0447\u043a\u043e \u0441\u043f\u043e\u0440\u0435\u0434 \u0431\u0438\u0437\u043d\u0435\u0441 \u0438\u0437\u0438\u0441\u043a\u0432\u0430\u043d\u0438\u044f\u0442\u0430. \u0410\u043a\u043e \u0437\u0430\u043a\u043b\u044e\u0447\u0432\u0430\u043d\u0435\u0442\u043e \u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u0435\u043d\u043e \u0441 <code>release_on_commit => false<\/code>, \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u043c\u043e\u0436\u0435 \u0434\u0430 \u0441\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0438\u0440\u0430 \u0438 \u043a\u043e\u0434 \u0441 \u043c\u043d\u043e\u0433\u043e \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 (\u043a\u0430\u0442\u043e \u0432 <a href=\"http:\/\/blog.yavor.info\/?p=408\">\u0447\u0430\u0441\u0442 1<\/a>).<\/p>\n<p>&#8211; \u041d\u0430 \u043a\u0440\u0430\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u0430 \u0441\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0432\u0430 \u0441 <code>DBMS_LOCK.RELEASE<\/code>. \u0422\u0443\u043a \u043e\u0442\u043d\u043e\u0432\u043e \u043f\u0440\u0438 \u043d\u0435\u0443\u0441\u043f\u0435\u0445 \u043d\u044f\u043c\u0430 exception, \u0430 \u0440\u0430\u0437\u043b\u0438\u0447\u0435\u043d return value.<\/p>\n<p>&#8211; \u0412\u0430\u0436\u043d\u043e \u0435 \u0434\u0430 \u0441\u0435 \u043f\u043e\u0434\u0441\u0438\u0433\u0443\u0440\u0438 &#8222;\u043e\u0442\u043a\u043b\u044e\u0447\u0432\u0430\u043d\u0435\u0442\u043e&#8220; \u043d\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u0430 \u0441 exception handler. \u0410\u043a\u043e \u043f\u043e \u043d\u044f\u043a\u0430\u043a\u0432\u0430 \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u043d\u0435 \u0433\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u0438\u043c \u0438 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430\u0442\u0430 &#8222;\u0433\u0440\u044a\u043c\u043d\u0435&#8220; \u043f\u043e \u0441\u0440\u0435\u0434\u0430\u0442\u0430, \u0442\u043e\u0439 \u0449\u0435 \u0441\u0438 \u043e\u0441\u0442\u0430\u043d\u0435 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d \u0434\u043e \u043a\u0440\u0430\u044f \u043d\u0430 \u0441\u0435\u0441\u0438\u044f\u0442\u0430.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>(<a href=\"http:\/\/blog.yavor.info\/?p=430\">\u043a\u044a\u043c \u0447\u0430\u0441\u0442 4<\/a>)<\/p>\n<p>\u0421 \u043f\u0440\u0435\u0434\u0438\u0448\u043d\u0430\u0442\u0430 \u0447\u0430\u0441\u0442 \u043e\u0442 \u043f\u043e\u0440\u0435\u0434\u0438\u0446\u0430\u0442\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u0445 \u0435\u0434\u0438\u043d \u043c\u0430\u043b\u043a\u043e \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u043d \u0438 \u0434\u043e\u0441\u0442\u0430 \u043c\u043e\u0449\u0435\u043d \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0437\u0430 \u0437\u0430\u0449\u0438\u0442\u0430. \u0412 \u043f\u043e\u0432\u0435\u0447\u0435\u0442 \u0441\u043b\u0443\u0447\u0430\u0438 \u0442\u043e\u0439 \u0435 &#8222;\u043f\u0440\u0435\u043a\u0430\u043b\u0435\u043d\u043e&#8220; \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0430\u0432\u0430\u0449 (\u0445\u0430\u0440\u0435\u0441\u0432\u0430\u043c \u0442\u0435\u0440\u043c\u0438\u043d\u0430 <em>scalability inhibitor<\/em>). \u041d\u043e \u043c\u043e\u0436\u0435 \u0434\u0430 \u0441\u0435 \u043e\u043a\u0430\u0436\u0435 \u043f\u043e\u043b\u0435\u0437\u0435\u043d \u0432 \u0441\u043b\u0443\u0447\u0430\u0438, \u043a\u043e\u0433\u0430\u0442\u043e \u0435\u0434\u043d\u0438 \u0434\u0430\u043d\u043d\u0438 \u0441\u0435 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0430\u0442 \u043e\u0442 \u0442\u043e\u043a\u043e\u0432\u0430 \u043c\u043d\u043e\u0433\u043e \u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u0438 \u043c\u0435\u0441\u0442\u0430 \u043a\u043e\u0434\u0430, \u0447\u0435  \u043d\u0438\u043a\u043e\u0439 \u043d\u0435 \u0433\u0438 \u0437\u043d\u0430\u0435 \u0432\u0441\u0438\u0447\u043a\u0438\u0442\u0435 (\u0441\u043f\u0430\u0433\u0435\u0442\u0438).<\/p>\n<p>\u041e\u0431\u0440\u0430\u0442\u043d\u043e, \u043a\u043e\u0433\u0430\u0442\u043e \u0441\u0435 \u0437\u043d\u0430\u0435 \u0442\u043e\u0447\u043d\u043e \u043a\u043e\u0438 \u043f\u0430\u0440\u0447\u0435\u0442\u0430 \u043e\u0442 \u043a\u043e\u0434\u0430 \u0449\u0435 \u0434\u043e\u0441\u0442\u044a\u043f\u0432\u0430\u0442 \u0434\u0430\u043d\u043d\u0438\u0442\u0435, \u0441\u0435 \u0434\u0435\u0444\u0438\u043d\u0438\u0440\u0430\u0442 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u0438 \u0441\u0435\u043a\u0446\u0438\u0438. \u0417\u0430 \u0446\u0435\u043b\u0442\u0430 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430 \u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u043b\u0438\u0433\u0435\u043d\u0442\u043d\u043e \u0437\u0430\u043a\u043b\u044e\u0447\u0432\u0430\u043d\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u0442\u0430 \u043d\u0430 \u043f\u0430\u043a\u0435\u0442\u0430 dbms_lock. \u0422\u043e\u0437\u0438 \u043f\u0430\u043a\u0435\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u044f \u0432\u044a\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442 \u0434\u0430 \u0441\u0435 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0442 \u043f\u043e\u0437\u043d\u0430\u0442\u0438\u0442\u0435 \u043d\u0438 \u0432\u0433\u0440\u0430\u0434\u0435\u043d\u0438 \u0432 \u041eracle \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0438 \u0437\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0432\u0430\u043d\u0435, \u0437\u0430 \u0434\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0432\u0430\u043c\u0435 \u0434\u043e\u0441\u0442\u044a\u043f\u0430 \u0434\u043e &#8222;\u043d\u0430\u0448\u0438&#8220; \u0441\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u0438. \u041e\u0441\u043d\u043e\u0432\u043d\u043e \u043f\u0440\u0435\u0434\u0438\u043c\u0441\u0442\u0432\u043e \u043f\u0440\u0435\u0434 hand-made \u0437\u0430\u043a\u043b\u044e\u0447\u0432\u0430\u043d\u0438\u0446\u0438\u0442\u0435 \u0435, \u0447\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u0435 \u0434\u043e\u043a\u0430\u0437\u0430\u043d, \u0442\u0435\u0441\u0442\u0432\u0430\u043d, \u0436\u0435\u043b\u0435\u0437\u0435\u043d \u0438 \u043f\u043e\u0437\u043d\u0430\u0442. \u0417\u0430 \u0434\u0430 \u043c\u043e\u0436\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044f \u0434\u0430 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430 \u0442\u043e\u0437\u0438 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u044a\u043c, \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0438\u043c\u0430 \u043f\u0440\u0430\u0432\u0430 \u0437\u0430 \u0438\u0437\u043f\u044a\u043b\u043d\u0435\u043d\u0438\u0435 \u043d\u0430 dbms_lock.<\/p>\n<p>(<a href=\"http:\/\/blog.yavor.info\/?p=431\">A\u043a\u043e \u0442\u0438 \u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0447\u0435\u0442\u0438 \u043d\u0430\u0442\u0430\u0442\u044a\u043a&#8230;<\/a>)<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[],"tags":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"http:\/\/blog.yavor.info\/index.php?rest_route=\/wp\/v2\/posts\/431"}],"collection":[{"href":"http:\/\/blog.yavor.info\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.yavor.info\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.yavor.info\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.yavor.info\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=431"}],"version-history":[{"count":0,"href":"http:\/\/blog.yavor.info\/index.php?rest_route=\/wp\/v2\/posts\/431\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.yavor.info\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=431"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.yavor.info\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=431"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.yavor.info\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=431"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}