Mysql: هل إلغاء السياق يلغي الاستعلام الأساسي؟

تم إنشاؤها على ٥ يناير ٢٠١٨  ·  6تعليقات  ·  مصدر: go-sql-driver/mysql

ctx, cancel := context.WithCancel(context.Background())

// Cancel 5 seconds in.
go func() {
    time.Sleep(time.Second * 5)
    cancel()
}()

// This query should take 10 seconds to return.
rows, err := dbt.db.QueryContext(ctx, "SELECT v, SLEEP(10) FROM test LIMIT 1")
fmt.Println(rows, err)

بعد قراءة https://github.com/go-sql-driver/mysql/issues/496 و https://github.com/go-sql-driver/mysql/pull/608 ، كان لدي انطباع بأنه في على سبيل المثال أعلاه ، سيتم إلغاء الاستعلام الأساسي في منتصف التنفيذ ، ولكن لا يبدو أن هذا هو الحال. لا يزال الأمر يستغرق 10 ثوانٍ للعودة (ويظهر الاستعلام في قائمة عمليات MySQL) ، وإن كان ذلك مع الخطأ sql: Rows are closed . هل هذا يعني أن السائق غير قادر في الواقع على إلغاء الاستعلام الأساسي الذي يعمل على الخادم؟

التعليق الأكثر فائدة

هل هناك أي خطط لإصلاح ذلك TODO؟

ال 6 كومينتر

مرحبًا ، أنا مؤلف # 608.

هل هذا يعني أن السائق غير قادر في الواقع على إلغاء الاستعلام الأساسي الذي يعمل على الخادم؟

نعم ، لا يؤدي تطبيقي إلى إنهاء الاستعلام الذي يتم تشغيله على الخادم.
لا يزال في حالة TODO.

https://github.com/go-sql-driver/mysql/blob/9181e3a86a19bacd63e68d43ae8b7b36320d8092/driver_go18_test.go#L270

لمعلوماتك ، يمكنك تحديد وقت تنفيذ الاستعلام عبر تلميح.
https://dev.mysql.com/doc/refman/5.7/en/optimizer-hints.html#optimizer - تلميحات-وقت التنفيذ

تضمين التغريدة

هل هناك أي خطط لإصلاح ذلك TODO؟

هل هناك أي خطط لإصلاح ذلك TODO؟

https://github.com/go-sql-driver/mysql/pull/791

يبدو أنه في حدث هام بالمناسبة. بالنسبة للآخرين الذين يضيفون كسر الدائرة إلى الخدمات ويجدون أن الاستعلامات لا تزال قائمة في mysql ، فقد ترغب في مشاهدة هذه المشكلات والرد عليها حتى يعرف المشرفون أن هناك فائدة.

توقع معظم زملائي أن يعمل هذا لأنهم كانوا أكثر دراية بـ postgres حيث من المعروف أن مهام سير العمل تعمل ، ويكون تنفيذها أكثر سهولة / مدعومة من جلسة الاستعلام محليًا دون إجراء المزيد من الاتصالات.

في الوقت الحالي ، أقوم بتوثيق في مؤسستي أن mysql أقل ملاءمة هنا وأن الدعم الفعال لمثل هذه الميزة سيضمن تغيير خادم mysql لواجهة الاتصال الخاصة به.

سيكون من الجيد إيجاد حل لأن لدينا الكثير من استخدام mysql في الوقت الحالي. :-)

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

xuewindy picture xuewindy  ·  3تعليقات

julienschmidt picture julienschmidt  ·  7تعليقات

tbdingqi picture tbdingqi  ·  7تعليقات

pmoosman picture pmoosman  ·  9تعليقات

victormongi picture victormongi  ·  4تعليقات