[問題] C#與MySql的問題
有些問題魯蛇的我不太清楚,想請問鄉民。
1. 連線ID與指令ID?
資料庫連線的時候有個連線的 thread ID,
取得的時候用 MySqlConnection.ServerThread,
這在資料庫是可以觀察到的。
但是公司的前輩說,
PHP內除了有連線ID可以查到之外,還有個指令的ID可以查,
是叫做Resource ID,具公司前輩說明此ID是資料庫給的。
例如我同一條連線做三次查詢,會像下面這樣,
Thread ID : 11325, Rexource ID: 475
Thread ID : 11325, Rexource ID: 476
Thread ID : 11325, Rexource ID: 477
想請問C#如何可以查到指令的ID?
2. 多執行緒中的資料庫連線該如何設計?
我知道這問題很菜,但是google我查不太到,
不知道是太菜的問題還是我關鍵字找錯。
我到現在有三種設計,不過我覺得都有些問題
(1) 一個執行緒內有一條連線,open->指令->close、open->指令->close
(2) 一個執行緒內有一條練限,open->指令->指令->close
(3) 多個執行緒共用一條連線、用Lock,應用程式開始時open,應用程式結束close
想請各位鄉民指點我一下,
又或者有可參考的書籍。
先謝謝各位有回答的鄉民
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.249.117.38
※ 文章網址: http://www.ptt.cc/bbs/C_Sharp/M.1419481758.A.36C.html
推
12/25 13:34, , 1F
12/25 13:34, 1F
→
12/25 13:36, , 2F
12/25 13:36, 2F
當多開連線時,連線過多server會將連線踢掉,
要是這時候執行指令,會導致錯誤,
如:
明明有該筆資料,select結果卻是空的,這種神奇的事情發生,
原因是select到一半就被踢掉,所以結果當然是空的。
所以當我執行緒過多=>連線過多=>怪問題一堆。
推
12/25 15:31, , 3F
12/25 15:31, 3F
推
12/25 15:31, , 4F
12/25 15:31, 4F
→
12/25 15:32, , 5F
12/25 15:32, 5F
→
12/25 15:33, , 6F
12/25 15:33, 6F
→
12/25 15:33, , 7F
12/25 15:33, 7F
→
12/25 15:34, , 8F
12/25 15:34, 8F
→
12/25 15:34, , 9F
12/25 15:34, 9F
→
12/25 15:35, , 10F
12/25 15:35, 10F
→
12/25 15:36, , 11F
12/25 15:36, 11F
推
12/25 15:44, , 12F
12/25 15:44, 12F
→
12/25 15:45, , 13F
12/25 15:45, 13F
基本上,作法2.(3)就已經是沒問題了,不會有「神奇的事情發生」,
但2.(3)的缺點就是要讓執行緒等…,
當開一兩條執行緒的時候還可以接受,
當開100條執行緒,一個執行緒有20個指令,大家都共用同一個連線,大家互相等,
我覺得這樣的時間耗費有點誇張。
有點左右為難
推
12/25 16:11, , 14F
12/25 16:11, 14F
→
12/25 16:11, , 15F
12/25 16:11, 15F
感謝你的意見,
但有些想法難以在現在的程式底下進行修改,
又或者修改的幅度太大,上頭不肯接受這時間的耗費。
如果是新的程式會使用你的想法看看,謝。
推
12/25 18:07, , 16F
12/25 18:07, 16F
→
12/25 18:08, , 17F
12/25 18:08, 17F
Thx,我會去了解 Connection Pool,
順便請問你是否可以提供一些參考方向或參考書籍?
※ 編輯: StupidGaGa (60.249.117.38), 12/26/2014 10:18:25
→
12/26 16:59, , 18F
12/26 16:59, 18F
→
12/26 17:00, , 19F
12/26 17:00, 19F
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章