الخلية "إدراج" الفرق بين سرعة الإنتاج والبيئة المحلية كبير جدا!

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

سؤال

ولقد ركبت المثال 5.1x الخلية على جهاز لينكس (768MB RAM). I استعادة نسخة احتياطية من حوالي 1000 الصفوف ومن خلال تطبيق. NET بلدي (نشرها على ويندوز خادم مختلفة) أديت بعض عمليات القراءة، والتي، عندما اعتبر أن الجدول لم يكن الفهارس، وكانت سريعة.

وI ثم مسح الخادم من هذه الصفوف وتستخدم ميزة في تطبيق الويب الخاص بي على ملقم آخر لإدراج صفوف (في الأساس، وأنا أقرأ النص من ملف نصي، إدخال البيانات في حقول من فئة مخصصة، ثم استدعاء إجراء مخزن مع هذه المعايير لكل رقم قياسي). عندما أتيحت لي الموقع وقاعدة البيانات سواء على آلة المحلية، وأود أن إدراج 2500 الصفوف على الفور (أقل من ثانية). الآن، ومع ذلك، في بيئة "إنتاج"، وهذه نفس 2500 الصفوف يأخذون 10 دقيقة لإدراجها. أنا باستخدام my.cnf الافتراضية التي تأتي مع تركيب الخلية.

هل هناك أي طريقة يمكنني تحسين يكتب دون المساس سرعة عمليات القراءة؟ أو أنا في عداد المفقودين شيء واضح؟

ويرجع الفضل في ذلك مسبقا!

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

المحلول

هل نظرت إلى صفحة اليدوية الخلية لسرعة إدراج ؟ تخمين الأول الذي يتبادر إلى الذهن بالنسبة لي هو أنك لا يلف مجموعة من الإجراءات في 2500 <وأ href = "http://dev.mysql.com/doc/refman/5.0/en/commit.html" يختلط = "نوفولو noreferrer"> تبدأ عملية / الالتزام بيان، لذلك الخلية هو autocommitting كل واحد من الإجراءات 2500.

نصائح أخرى

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

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

وعن طريق تحديث الدفعة يمكن أن تقلل من تلك تدرج لذهاب وإياب واحد مثالي وعلى بعد بضع منها على أرض الواقع.

للأسف لا أستطيع أن أقول لك كيف تفعل تلك التحديثات دفعة في العالم .NET، في جاوة كنت تستخدم <لأ href = "http://java.sun.com/javase/6/docs/api /java/sql/PreparedStatement.html#addBatch () "يختلط =" نوفولو noreferrer "> PreparedStatement.addBatch() . أنا متأكد من أن هناك شيئا من هذا القبيل في .NET.

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