{"id":61,"date":"2009-09-29T16:58:40","date_gmt":"2009-09-29T13:58:40","guid":{"rendered":"http:\/\/www.umutbesler.com\/?p=61"},"modified":"2009-09-29T17:02:36","modified_gmt":"2009-09-29T14:02:36","slug":"mysql-ile-memcache-kullanimi","status":"publish","type":"post","link":"http:\/\/www.umutbesler.com\/2009\/09\/29\/mysql-ile-memcache-kullanimi\/","title":{"rendered":"MySQL \u0130le Memcache Kullan\u0131m\u0131"},"content":{"rendered":"

Eski bir yaz\u0131m vard\u0131 kodaman.org<\/a>‘ta yazd\u0131\u011f\u0131m. Burayada yazal\u0131m, ar\u015five girsin :)<\/p>\n

Bilindi\u011fi gibi Php ile Memcache kullan\u0131larak veritaban\u0131 \u00fczerinden \u00e7ok fazla y\u00fck al\u0131nabiliyor. Ayr\u0131ca Memcache\u2019nin da\u011f\u0131labilir yap\u0131s\u0131 bize bir\u00e7ok kolayl\u0131k sa\u011flayabiliyor. \u00d6rne\u011fin \u00e7oklu web sunucular\u0131nda tek bir Memcache ile veri payla\u015f\u0131m\u0131 yap\u0131labiliyor veya \u00e7oklu Memcache sunucular\u0131 kullan\u0131larak daha sa\u011flam bir cache yap\u0131s\u0131 kurulabiliyor. Memcache\u2019nin kullan\u0131m\u0131nda ba\u015fka bir kolayl\u0131k sa\u011flayabilecek \u015fey ise MySQL\u2019den direk Memcache\u2019ye eri\u015febilmek, veri okuyup saklayabilmek. Bu yaz\u0131da bu i\u015flemin nas\u0131l oldu\u011funu ve kendi yapt\u0131\u011f\u0131m \u00e7e\u015fitli performans testlerini anlataca\u011f\u0131m.<\/p>\n

Bu i\u015flem yap\u0131l\u0131rken MySQL\u2019in udf yap\u0131s\u0131 kullan\u0131l\u0131yor. MySQL i\u00e7in Memcache mod\u00fcl\u00fcn\u00fc derleyip, bu mod\u00fcldeki fonksiyonlar\u0131 olu\u015fturmam\u0131z gerekiyor.
\n<\/p>\n

http:\/\/tangent.org\/586\/Memcached_Functions_for_MySQL.html<\/a>
\n
http:\/\/tangent.org\/552\/libmemcached.html<\/a><\/p>\n

Bu adreslerde bulunan udf eklentisi ile Memcache fonksiyonlar\u0131 kullan\u0131labilir hale geliyor.<\/p>\n

Kullan\u0131labilecek Fonksiyonlar:<\/strong>
\n
\nmemc_servers_set()
\nmemc_servers_behavior_set()
\nmemc_set()
\nmemc_get()
\nmemc_append()
\nmemc_prepend()
\nmemc_delete()
\n<\/code><\/p>\n

Bu fonksiyonlar\u0131,
\n
\nCREATE FUNCTION memc_servers_set RETURNS INT SONAME \"libmemcached_functions_mysql.so\";
\n<\/code>
\n\u015feklinde tan\u0131mlay\u0131p kullanabiliyoruz. Bu \u015fekilde MySQL queryleri ile Memcache\u2019ye veri yazabiliyoruz ve okuyabiliyoruz. Bunun sa\u011flayaca\u011f\u0131 kolayl\u0131klar yap\u0131lan i\u015fe g\u00f6re \u00e7ok \u00e7e\u015fitli olabilir.<\/p>\n

Ben bu tan\u0131mlamalar\u0131 yapt\u0131ktan sonra uygulama a\u015famas\u0131nda biraz fikir vermesi i\u00e7in \u00e7e\u015fitli h\u0131z testleri yapt\u0131m.<\/p>\n

Bu testleri yaparken 10.000 kay\u0131tl\u0131 bir tablo olu\u015fturdum ve bu tablodaki kay\u0131tlar\u0131 Memcache\u2019e aktard\u0131m.<\/p>\n

select memc_set(isim, deger) from table1;
\n<\/code>
\n10.000 kayd\u0131n aktar\u0131m\u0131 yakla\u015f\u0131k 3 saniye s\u00fcr\u00fcyor. Bu \u015fekilde Memcache\u2019ten bir veri \u00e7ekti\u011fimizde ise 0 saniyelik bir i\u015flemle sonu\u00e7 d\u00f6n\u00fcyor.<\/p>\n

select memc_get('isim3');
\n<\/code><\/p>\n

Sonu\u00e7:<\/strong>
\nBu i\u015flemin bir art\u0131s\u0131 trigger kullan\u0131larak baz\u0131 i\u015flemlerin MySQL\u2019e yapt\u0131r\u0131l\u0131p, Memcache\u2019ye veri girilebilmesi. Bu sayede kod taraf\u0131nda bir i\u015flem yap\u0131lmadan, \u00f6rne\u011fin herhangi bir veri giri\u015finden sonra, bu veri Memcache \u00fczerinde saklanabilir ve programdan direk okutulabilir. Tabi burada verileri MySQL\u2019den Memcache\u2019e yaz\u0131p, sonra okumay\u0131 yine MySQL \u00fczerinden yapmak performans a\u00e7\u0131s\u0131ndan sorun yaratacakt\u0131r. Yapt\u0131\u011f\u0131m testlerde, MySQL \u00fczerinden Memcache kullan\u0131m\u0131 h\u0131z a\u00e7\u0131s\u0131ndan \u00e7ok iyi sonu\u00e7lar vermese de uygulanaca\u011f\u0131 yere gore de\u011fi\u015fik tipte kullan\u0131mlarla \u00e7ok fazla kolayl\u0131k sa\u011flayabilir.<\/p>\n","protected":false},"excerpt":{"rendered":"

Eski bir yaz\u0131m vard\u0131 kodaman.org‘ta yazd\u0131\u011f\u0131m. Burayada yazal\u0131m, ar\u015five girsin :) Bilindi\u011fi gibi Php ile Memcache kullan\u0131larak veritaban\u0131 \u00fczerinden \u00e7ok fazla y\u00fck al\u0131nabiliyor. Ayr\u0131ca Memcache\u2019nin da\u011f\u0131labilir yap\u0131s\u0131 bize bir\u00e7ok kolayl\u0131k sa\u011flayabiliyor. \u00d6rne\u011fin \u00e7oklu web sunucular\u0131nda tek bir Memcache ile veri payla\u015f\u0131m\u0131 yap\u0131labiliyor veya \u00e7oklu Memcache sunucular\u0131 kullan\u0131larak daha sa\u011flam bir cache yap\u0131s\u0131 kurulabiliyor. Memcache\u2019nin kullan\u0131m\u0131nda […]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[11],"tags":[13,14,12],"_links":{"self":[{"href":"http:\/\/www.umutbesler.com\/wp-json\/wp\/v2\/posts\/61"}],"collection":[{"href":"http:\/\/www.umutbesler.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.umutbesler.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.umutbesler.com\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.umutbesler.com\/wp-json\/wp\/v2\/comments?post=61"}],"version-history":[{"count":5,"href":"http:\/\/www.umutbesler.com\/wp-json\/wp\/v2\/posts\/61\/revisions"}],"predecessor-version":[{"id":66,"href":"http:\/\/www.umutbesler.com\/wp-json\/wp\/v2\/posts\/61\/revisions\/66"}],"wp:attachment":[{"href":"http:\/\/www.umutbesler.com\/wp-json\/wp\/v2\/media?parent=61"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.umutbesler.com\/wp-json\/wp\/v2\/categories?post=61"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.umutbesler.com\/wp-json\/wp\/v2\/tags?post=61"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}