سؤال

أحاول تحسين redmine. قاعدة البيانات قبل أن تحصل على الكثير من الألم؛ التغييرات (أساسا سجل لجميع تغييرات SVN) عند 137000 صف (ISH) ويتم تعيين الجدول على إعدادات B ASIC الافتراضية. لا التعبئة الرئيسية الخ

الجدول كما يلي

ID int[11] Auto Inc (PK)
changeset_id int[11]
action varchar[1]
path varchar[255]
from_path varchar[255]
from_revision varchar[255]
revision varchar[255]
branch  varchar[255]

المؤشرات: الابتدائي (ID)،
changeet_id مجموعة إلى فهرس BTREE

كل شيء على Latin1 Charset بناء على القليل من المعلومات من http://forge.mysql.com/wiki/top10sqlperformancetips.

محرك الجدول هو تعيين مفاتيح InnoDB Pack إلى الافتراضي (حزم فقط Char Varchar)

يتم إيقاف تشغيل جميع الخيارات الأخرى.

ما هي أفضل طريقة لتحسين هذا؟ (شريط اقتطاع؛ س))

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

المحلول

هناك بعض تقنيات التحسين العامة ل MySQL: أول ستتأكد من أن هيئات البيانات الخاصة بك تناسب ABCS (انظر هنا). الذهاب إلى أعلى ثم من أعلى إلى أسفل، معرف و changeset_id_id تبدو جيدة، يجب أن يكون الإجراء سحر1 بدلا من varchar (nullable إذا كنت تستطيع تركها فارغة (وبشكل عام، فتأكد من تعيين nullable بشكل صحيح في الحقول الأخرى)). بالنسبة إلى 5 مجالات أخرى (والتي اعتمادا على الحجم من شأنها أن تهيمن على الجدول)، هل هناك سلاسل من نوع البيانات الصحيح؟ (أنا أظن نعم مع المسار، from_path، فرع، ولكن ربما يجب أن يكون المراجعة رقما (أنا أظن أنه كذلك، فهذا يدعم الجيت أو أي شيء))

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

نصائح أخرى

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

طريقة تحسين الكتابة هي تقليل عدد الفهارس. من الناحية المثالية، يمكنك استخدام ما في SQL Server في MS SQL هو "الفهرس المتجمع" مع مفتاح زيادة رتابة، مما يضمن لك كتابة سجلات جديدة إلى نهاية الجدول، ولا تكتب أي فهرس منفصل آخر. الأفضل من ذلك، حتى، هو تخطي DBMS والكتابة إلى ملف سجل قديم عادي من نوع ما، إذا كنت لا تحتاج إلى أي إمكانية معاملات.

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

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

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