• 4 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
انواع جدول - Table types
#11
من فکر کنم اگر Y.P.Y مستندات مطالبی رو که بیان کرده ارائه بده و شما هم همین کار رو کنید متوجه میشید که هیچ قصدی در کار نیست. Smile
علم تاج افتخار دنیا و یادگار پس از مرگ است
  پاسخ
تشکر شده توسط : Y.P.Y
#12
عزیز کسی با شما مسله ای نداره. شما گفتین InnoDb اونجوریه... من گفتم مثلا؟ یعنی مثال بزنید.

بعد لینکی که وحید داد، قبولش کردم و تاییدش هم کردم. ولی نظرمو دادم که کمی تعصبی برخورد کرده اون وبسایته!
طبیعتاً هر چیزی جایی داره. چه MyISAM چه Memory چه InnoDb... عنوان تاپیک هم بیانگرش هست: انواع جدول - Table types
و بشوخی به وحید گفتم که لعنت بر InnoDb.(چون اکثراً خودم از MyISAM استفاده میکنم)

در ضمن نظر و پاسخ دادن به مطالب/تاپیک ها زوری نیست.
وبلاگ: Yousha.Blog.ir

صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
http://gulfnews.com/opinion/thinkers/ira...i-1.500997
  پاسخ
تشکر شده توسط : admin
#13
کوچیکی میکنم ، اما اصلا این بحث ها جلوه خوبی نه برای شما نه برای فروم داره
  پاسخ
تشکر شده توسط : Alimokhlesi Y.P.Y
#14
البته با قفل جداول نوع MyISAM میشه تراکنش رو براش شبیه سازی کرد. Smile اگر واقاً به تراکنش احتیاج باشه.
وبلاگ: Yousha.Blog.ir

صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
http://gulfnews.com/opinion/thinkers/ira...i-1.500997
  پاسخ
تشکر شده توسط :
#15
گفتی تراکنش یادم افتاد که من با تراکنش مشکل دارم.
میشه کامل توضیح بدین؟ Big Grin
علم تاج افتخار دنیا و یادگار پس از مرگ است
  پاسخ
تشکر شده توسط : PowerDesign
#16
در cakephp کلید خارجی و تراکنش ها رو به شیوه جالبی پیاده سازی کرده. اونم فقط با یک جدول واسته
  پاسخ
تشکر شده توسط : Y.P.Y
#17
نقل قول:گفتی تراکنش یادم افتاد که من با تراکنش مشکل دارم.
میشه کامل توضیح بدین؟
د Wink
تراکنش بحث گسترده ای داره، براتون خلاصه و اصل مطلب رو میگم. Smile:

پیشگفتار: Wink
اول اینکه تراکنش بیشترین کاربرد رو در نرم افزار های مالی/اداری، داده های سنگین یا نرم افزارهایی که به صحت داده ها حساس هستند داره. یا برنامه نویسی به زبان SQL.
دوم اینکه خود تراکنش هم فقط بر روی جداول نوع InnoDb و BDb کار می کنه.
سوم اینکه MySQL هم که در حالت عادی با هر رشته Query(که شامل یک دستور اصلی باشه) بصورت مجزا/مستقل/یک واحد برخورد می کنه.
چهارم اینکه Database میتونه(تقریباً) از هر نوعی باشه...

تراکنش یا همون Transaction به مجموعه ای از دستورات/عبارات زبان SQL گفته می شه که بصورت مجزا ولی وابسته(به هم) بشکل یک بسته/واحد عمل می کنند. و اگر یکی از دستورات با موفقیت اعمال نشه(معمولاً با دادن خطا) کل اون بسته/واحد لغو میشه و بحالت اولش بر می گرده. بعد از اعمال موفقیت آمیز دستورات اونوقت نوبت به انجام تراکنش میرسه.
در یک کلام نوعی Recovery محسوب میشه.

خاصیت تراکنش اینه که دوام، سازگاری، تفکیک پذیری، تجزیه، استحکام، یکپارچگی، ایمنی، نظم و... رو در داده ها و عملیات بوجود میاره(در کنار کاهش سرعت).

تراکنش ها دو نوعند: نوع خودکار(نهان) و نوع دستی.

نوع دستی:
همانطور که از نامش پیداست، توسط برنامه نویس/کاربر انجام می گیره. و کمی هم باعث کاهش سرعت میشه.
اولین کار اینه که جدول رو از نوع InnoDb یا BDb بسازید. یا با دستور alter به یکی از این نوع ها تغییرش بدید.
حالا شروع تراکنش رو با عبارت start transaction; به MySQL اعلام می کنید. این یعنی هر دستور/کدی که بعدش قرار بگیره به عنوان یک بسته/واحد درنظر گرفته میشه(یعنی قابل تراکنش هستش).
بعد رشته Query مورد نیازتون رو می نویسید و اعمال/Excute می کنید(هر چند تا). مثلاً insert into... delete * from xxx, update xxx...
حالا انتخاب با خودتونه که آیا عملیات انجام شده رو برای تائید می کنید یا خیر؟
اگر بله، دستور commit; رو اجرا می کنید تا MySQL هم عملیات/داده ها رو تائید و ذخیره کنه.
اگر خیر، دستور rollback; رو اجرا می کند تا MySQL هم عملیات/داده ها رو لغو کنه.

موقعی هم که دستور commit یا rollback اجرا بشه، تراکنش بصورت خودکار Stop میشه Smile.

نوع خودکار:
این نوع در حالت پیشفرض فعال هستش و بصورت خودکار عملیات و داده هارو تائید می کنه.
برای غیر فعال کردن این نوع از عبارت set autocommit= 0; استفاده میشه. و برای فعال کردنش از عبارت set autocommit= 1;
بعد از غیر فعال کردنش، عملیات نوع دستی رو انجام میدید.
و...
وبلاگ: Yousha.Blog.ir

صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
http://gulfnews.com/opinion/thinkers/ira...i-1.500997
  پاسخ
تشکر شده توسط : amir.s zoghal admin nasserghiasi PowerDesign
#18
من در تعجبم چرا myisam بعد از این همه سال تراکنش رو پیداسازی نمیکنه چون واقعا کاربردی هست.
  پاسخ
تشکر شده توسط : PowerDesign
#19
نقل قول:من در تعجبم چرا myisam بعد از این همه سال تراکنش رو پیداسازی نمیکنه چون واقعا کاربردی هست.
شبیه سازی که میشه کرد... چرا واقاً کاربردی هست؟
وبلاگ: Yousha.Blog.ir

صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
http://gulfnews.com/opinion/thinkers/ira...i-1.500997
  پاسخ
تشکر شده توسط :
#20
شبیه سازیش قوی و بهینه نیست.

چرا واقعا کاربردی هست. دلیلم رو با یک مثال بیان می کنم.


فرض کنید ما یک سیستم خبری داریم . یک جدول موضعات رو نگه داری میکنه و جدول دیگر خبر ها. رابطه این 2 جدول یک فیلد در جدول خبر هست که شماره یکتای اختصاص داده شده به اون موضوع رو در خودش نگه داری میکنه

2 عمل روی جدول موضوع انجام میدیم.

1- عمل ویرایش : نیاز پیدا میکنیم که کد موضوع خبر رو به دلایلی عوض کنیم. این موضوع شامل 500 خبر در خودش هست. اگر کد رو عوض کنیم باید یک کوئری دیگری در جدول خبر بزنیم. و تغییرات روی این جدول پیاده سازی کنیم.


2- عمل خذف : اپراتور می خواهد یک موضوع رو حذف کند. اگر موضوع شامل خبر های وابسته باشد. پس باید این خبر ها هم حذف شود.
باز هم در این عمل بیش از دو کوئری البته بسته به نوع کار نیاز هست.

البته در عمل ویرایش تراکنش ها بسیار مهم می شوند. فرض کنید. که ممکن هست. در همان لحظه سرور خاموش یا کرش کنه. پس اطلاعات ما ناقص اعمال شد.

اما اگر از تراکنش استفاده بشه. این عملیات ها با اطمینان بیشتری انجام میشه.
و از همه مهم تر کیلید ها خارجی که کاربرد زیادی در پروژه های بزرگتر دارند. مورد استفاده قرار میگیرد
  پاسخ
تشکر شده توسط : Y.P.Y human


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان