PostgreSQL مقابل MySQL: كيف تقارن أحجام بياناتهم ببعضها البعض؟

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

سؤال

لنفس مجموعة البيانات ، مع معظم البيانات النصية ، كيف يحجم البيانات (الجدول + فهرس) من postgresql مقارنة مع MySQL؟

  • يستخدم PostgreSQL MVCC ، مما يشير إلى أن حجم بياناته سيكون أكبر

  • في هذا العرض التقديمي ، تحدث أكبر موقع مدونة في اليابان عن ترحيلها من PostgreSQL إلى MySQL. كان أحد أسباب الابتعاد عن PostgreSQL هو أن حجم البيانات في PostgreSQL كان كبيرًا جدًا (ص 41):الهجرة من PostgreSQL إلى MySQL في Cocolog ، أكبر مجتمع مدونة في اليابان

  • PostgreSQL لديه ضغط البيانات ، بحيث ينبغي أن يجعل حجم البيانات أصغر. لكن المكون الإضافي MySQL لديه ضغط أيضًا.

هل لدى أي شخص أي تجربة فعلية حول كيفية مقارنة أحجام البيانات في PostgreSQL و MySQL مع بعضها البعض؟

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

المحلول

  • يستخدم MySQL MVCC أيضًا ، فقط تحقق من InnoDB. ولكن ، في PostgreSQL ، يمكنك تغيير FillFactor لتوفير مساحة للتحديثات المستقبلية. مع هذا ، يمكنك إنشاء قاعدة بيانات تحتوي على مساحة للبيانات الحالية ولكن أيضًا لبعض التحديثات والحذف المستقبلية. عندما يقوم Autovacuum و Hot بأشياءهم بشكل صحيح ، يمكن أن يكون حجم قاعدة البيانات الخاصة بك مستقرًا.
  • تدور المدونة حول الإصدارات القديمة ، وقد تغيرت الكثير من الأشياء و PostgreSQL تقوم بعمل أفضل بكثير في الضغط كما فعلت في الأيام الخوالي.
  • يعتمد الضغط على نوع البيانات والتكوين والسرعة أيضًا. عليك أن تختبر لترى كيف تعمل من أجلك.

لقد قمت ببعض التحويلات من MySQL إلى PostgreSQL وفي كل هذه الحالات ، كان PostgreSQL أصغر حوالي 10 ٪ (MySQL 5.0 => postgresql 8.3 و 8.4). تم استخدام هذا 10 ٪ لتغيير FillFactor على الجداول الأكثر تحديثًا ، وتم تعيينها على FillFactor 60 إلى 70. كانت السرعة أفضل بكثير (لم تعد هناك مشاكل مع أكثر من 20 مستخدمًا متزامنًا) وكان حجم البيانات مستقرًا أيضًا ، ولا يوجد MVCC مستمرًا خارج عن السيطرة أو الفراغ إلى بعيد.

MySQL و PostgreSQL هما وحوشان مختلفان ، PostgreSQL يدور حول الموثوقية حيث يكون MySQL populair.

نصائح أخرى

كلاهما له متطلبات التخزين في وثائق كل منهما:

MySQL: http://dev.mysql.com/doc/refman/5.1/en/storage-requirements.html
Postgres: http://www.postgresql.org/docs/current/interactive/datatype.html

لا تظهر مقارنة سريعة بين الاثنين أي "Zomg postgres" تتطلب 2 ميغابايت لتخزين اختلافات النوع ". أفترض أن Postgres يمكن أن يكون لها بيانات تصويرية أعلى من MySQL ، أو يجب أن تمدد ملفات البيانات الخاصة بها في قطع أكبر ، لكن لا يمكنني العثور على أي شيء واضح أن Eastgres "يهدف" التي ترحيلها إلى MySQL هي العلاج.

أود أن أضيف أنه بالنسبة إلى متاجر الأعمدة الكبيرة ، يستفيد PostgreSQL أيضًا من ضغطها باستخدام "عضو بسيط وسريع للغاية في عائلة LZ لتقنيات الضغط"

لقراءة المزيد حول هذا ، تحقق من http://www.postgresql.org/docs/9.0/static/storage-toast.html

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

حول الفهارس ،

يخزن MySQL البيانات التي تجعلها ضخمة. لا بعد ذلك. هذا يعني أن حجم تخزين فهرس B-Tree في Postgres لا يعتمد على عدد الأعمدة التي يمتد عليها أو أي البيانات التي يمتلكها العمود.

يدعم Postgres أيضًا فهارس جزئية (على سبيل المثال حيث الحالة = 0) وهي ميزة قوية للغاية لمنع فهارس البناء على ملايين الصفوف عند الحاجة إلى بضع مئات فقط.

نظرًا لأنك ستضع الكثير من البيانات في Postgres ، فمن المحتمل أن تجد أنه من العملي أن تكون قادرًا على إنشاء فهارس تبييض قفل الجدول.

مرسل من الايفون الخاص بي. آسف على الإملاء السيئ وعدم وجود المراجع

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