搜尋

首頁  >  問答  >  主體

java - 别人调用我接口,往我数据库里插数据问题,谢谢

局域网里,别人使用C#写的程序,开了4个线程,往我接口里插入4张不同表的数据,问题如下:

谢谢

PHP中文网PHP中文网2889 天前535

全部回覆(5)我來回復

  • PHPz

    PHPz2017-04-18 09:09:15

    謝謝主席邀請,
    主席說的兩種方法都是一樣的,都是為了防止重複的方法,主要差別在於主鍵或唯一索引去重才能有效解決重複插入的問題,而在程序中去查重再插入,由於這兩個操作不是原子性的,依然不能防止有請求能在你查詢到插入之間進行插入,所以依然會有重複的風險。

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-18 09:09:15

    只要請求量資料庫可以扛得住,可以用資料庫的唯一索引。也可以利用redis在應用層做唯一性判斷。

    回覆
    0
  • 高洛峰

    高洛峰2017-04-18 09:09:15

    感覺這個問題的重點不是資料去重,而是那位同學為什麼在沒有接到操作失敗的消息時要發起重試。
    建議用攔截器打日誌看看每次請求的處理時間.

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-18 09:09:15

    呼叫的那邊應該要等待請求回應後再去做下一個操作,例如可以把請求超時時間設定短一點。

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:09:15

    最簡單有效的方法就是建立唯一索引,暫時不用考慮效能問題。
    如果真遇到資料庫瓶頸,估計架構早就不是現在這樣的了。

    回覆
    0
  • 取消回覆