هل الأفضل لاستخدام حدد بيان أعد عندما تقومون به واحد فقط حدد؟

StackOverflow https://stackoverflow.com/questions/671768

سؤال

وأنا أكتب حاليا فئة CRUD في PHP باستخدام PDO.

وأنا أحب الأمنية التي أعدت توفر البيانات، ولكن سمعت أنهم أيضا منع قواعد البيانات مثل الخلية من استخدام queryCache.

هل من الأفضل استخدام العبارة تحديد مستعدا عندما تقومون به فقط اختيار واحد في وقت واحد؟ أو من شأنه فقط $ pdo-> اقتبس () يكفي وجهة النظر الأمنية (أو لديك أي مزايا أخرى مثل التخزين المؤقت؟).

وكل ما عندي من تحديث وحذف وتتم إدراج استخدام البيانات المعدة بالفعل. أنا مجرد لافتة حول يختار.

هل كانت مفيدة؟

المحلول

وMySQLPerformanceBlog.com فعلت بعض المعايير في مقال عن " تحضير بيانات ". بيتر زايتسيف كتب:

<اقتباس فقرة>   

ولقد فعلت مؤشر بسيط (باستخدام   SysBench) لمعرفة أداء بسيطة   الاستعلام (نقطة واحدة صف وتحديد) باستخدام   بيان القياسية، وبيان أعدت   ويكون ذلك خدم من ذاكرة التخزين المؤقت الاستعلام.   البيانات المعدة تعطي 2290   استفسار / ثانية وهو كبير   أفضل من 2000 مع معيار   البيانات لكنه لا يزال أقل بكثير   4470 استفسار / ثانية عندما تكون النتائج   خدم من ذاكرة التخزين المؤقت الاستعلام.

ويبدو أن هذا القول أن "النفقات العامة" استخدام البيانات المعدة هو أن تكون 14.5٪ <م> أسرع من استخدام تنفيذ الاستعلام على التوالي، على الأقل في هذا اختبار بسيط. الفرق النسبي ربما يقلل مع استعلام أكثر تعقيدا أو مجموعة نتائج أكبر.

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

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

<اقتباس فقرة>   

وقبل الخلية 5.1.17، أعدت   البيانات لا تستخدم ذاكرة التخزين المؤقت الاستعلام.   بدءا 5.1.17، أعدت   البيانات تستخدم ذاكرة التخزين المؤقت الاستعلام تحت   ظروف معينة، والتي تختلف   تبعا لطريقة التحضير: ...

والوثائق تطول لوصف هذه الظروف. الذهاب قراءتها.

وأنا لا أوصي باستخدام بيانات معدة للاستعلامات SELECT. يمكن نقلا عن المتغيرات كما كنت أقحم منهم إلى البيانات SQL تكون فعالة إذا كنت تفعل ذلك باستمرار. ولكن حتى نقلا قد يكون لها بعض الثغرات الأمنية الدقيقة، على سبيل المثال، مع مجموعات الأحرف متعددة البايت (انظر الخلية علة # 8378 ). فإنه من السهل أن استخدام الاستعلامات المعدة بطريقة آمنة في هذه الحالات.

نصائح أخرى

نعم، استخدم عبارات المعدة. انا اشك سوف تصل إلى مشاكل في الأداء مع بيانات معدة تشغيل أبطأ بكثير من مجرد الاستعلام الحرفي منتظم. ومع ذلك، في الخلية، التي تظهر أن يكون صحيحا. أود أن تختار عبارات المعدة مع ذلك.

وهنا إشارة واحدة: http://www.mysqlperformanceblog.com/2006/08/02 /-تصريحات أعدت ك /

وعلى الرغم من ذلك، إذا كنت قلقا حول التخزين المؤقت، قد ترغب في النظر في أشياء مثل أعطها .

وهذا هو فهمي، وهو ما أكدته المناقشة من: <لأ href = "http://www.usenet-forums.com/php-general/394519-php-prepared-statement.html" يختلط = "نوفولو noreferrer "> هنا

<اقتباس فقرة>   

ويؤخذ استعلام كالمعتاد واحدة   سلسلة، تحليل، التي تنفذها، و   عاد. نهاية القصة. وأعدت   يؤخذ بيان كقالب   سلسلة، تحليل، ومؤقتا. بعد ذلك   لديها المتغيرات التي تم تمريرها إلى ذلك، تقريبا   مثل استدعاء دالة.

     

والتخزين المؤقت الاستعلام يميل مرة واحدة ليكلف   أكثر قليلا من مجرد تنفيذه   مباشرة. وفورات تأتي في وقت لاحق   يدعو، عندما تخطيت تجميع   خطوة. يمكنك حفظ في الاستعلام كرر   كمية من التجميع.

وهكذا، وباختصار، على الخلية، إذا كنت تنفيذ استعلام مرة واحدة، وإعداد أنها مجرد يضيف كمية اضافية لا داعي للمعالجة.

تعتبر

والبيانات المعدة عموما أن يكون ممارسة أفضل.

وأود أن أقترح قراءة مسقل المقالة على البيانات المعدة والعملية ومزايا أكثر التقليدية سهل الفانيليا محرف الاستفسارات مفتول العضلات.

وأنت تفعل سوى اختيار "مرة واحدة" في عمر التطبيق، أو "مرة واحدة" في الدعوة إلى وظيفة؟

ولأن إذا كان هذا الأخير، يجب أن لا تزال تستفيد من التخزين المؤقت في بيان معد سلفا على أي حال.

ومجرد تذكير بأن الخلية> يفعل استخدام ذاكرة التخزين المؤقت الاستعلام عن البيانات المعدة.

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

والسبب واحد عدم استخدامها سيكون استعلامات تكلفة أن الحصول على استدعاء مع بعض التردد. (الاستعلامات التي تأخذ الكثير من الوقت لتشغيل ولها فائدة حقيقية على أن تكون على مخبأ الاستعلام).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top