我不太明白这个词怎么表达
是这样的,现在有一台服务器运行数据库(server
),另外一台运行php程序(client
),浏览器(Browser
)访问client
,然后client
逻辑判断后通过http
协议对server
中的数据库进行CURD
操作
有个问题就是,如果Browser
的用户操作过快,而server
和client
之间http请求太慢的话,就会导致client
上获取的数据更新不及时,导致一些错误。。
栗子:一个用户只能买一个商品,用户点击之后,client
先读取server
的数据,判断是否已经购买,没有购买的话进行写入操作,然后购买完成,但是如果用户连着点击两次购买,两次操作一次进入client
,然后由于client
和server
之间网速或者其他一些问题,写入操作没有及时完成,造成两次购买操作的判断为此用户未购买,于是会有两次写入server
数据库的操作,就会造成错误。。
这个问题属于什么?应该怎么解决?
用内存数据库或者NOSQL数据库来跟客户端交互,然后内存数据库跟MYSQL这类关系数据库“同步”。
如果客户端某些操作需要数据库查询来判断,这个时候如果是高并发的情况很容易就产生错误了。以前就经历过,比如用户注册判断是否有重名的,理论上是先查询数据库是否有该用户名存在然后插入,然而实际运营中这个逻辑竟然被打破了,发现了重名用户。
所以把核心的数据放到关系数据库,对速度有要求的使用内存数据库。适当的使用缓存以减小重复的查询。