首页 文章

在Web服务器级别锁定MySQL表

提问于
浏览
0

假设我有一个Web应用程序(在服务器端使用Django),我希望其中一个用户(类似管理员的用户 "A" )能够加载某个视图(网页),在那里她可以修改数据库表,这将阻止其他用户访问数据库(以及与修改数据库相关的视图),直到用户 A 完成(按页面上的某个按钮) . 我正在使用MySQL和SQLite(用于开发) . 这是我的问题 .

  • 锁定表的MySQL机制在MySQL服务器级别上工作,而不在Web服务器级别上工作 . 由于应用程序服务器(Django)端只有一个与MySQL服务器关联的MySQL用户(即所有应用程序用户在MySQL端都拥有相同的用户),因此这种机制无关紧要 . 我对么?

  • 如果1.以上是正确的,那么创建这样一个锁的正确方法是什么?好吧,可以创建一个单独的表“lock_table”,它只有一个布尔条目,每个视图都会轮询它,如果设置了 - 重定向到“db temporary locked”视图 . 但是,我不确定这是一个好方法 . 如果您知道,请告知如何实施它 .

谢谢 .

2 回答

  • 1
    • 你是对的 . 您无法在MySQL级别为锁定表设置系统,因为每个数据库查询都将由同一个MySQL用户进行 .

    • 正确的方法是使用memcached或其他缓存系统在缓存中设置锁定,然后检查这些视图中的装饰器中是否存在这样的锁定 .

  • 1

    第二选择将是一个不错的选择 . 另一个选择是在django数据库中定义"virtual second database"并使用此数据库执行锁定查询 . 有关详细信息,请参阅here .

相关问题