Yüksek boyutta ver için hangi veritabanı öneriyorsunuz?

Elimizde 5-10 milyondan fazla veri var bu verilerin icinde surekli kullanici arama yapmasi gerek. Sorgumda like ve kategori id kullaniyorum fakat 600 k veride 300 ms suruyor veri cogalinca mysql fazla dayanmayazaktir ne gibi yontemler kullanabilirim

Innodb kullaniyorum myisam full text search deneyecegim bunun disinda ne kullanabilirim

İ
0 kişi takip ediyor.
Misafir olarak yayınla
10
10 CEVAP

Kategori_id ile like yapmiyorum sorgum su sekilde kat_ id IN(1,2,3,4) AND LIKE araba

İ

full text e gec

Efe Gengeç 6 yıl

ayrica stored procedures #

Efe Gengeç 6 yıl

Stored procedures daha once duymadim tam olarak nedir acaba mantigi nedir

İsmail Küçükbayram 6 yıl

mysql veritabanı motoruna gömülmüş. Fonksiyonlar bir çok cachelenmiş sorgudan daha hızlı çalışır. Yani sorgu yerine sorguyu içeren fonksiyon çalıştırmak

Efe Gengeç 6 yıl

Ornek bir kullanim mevcutmu acaba ne kadar performansli olur acaba ?

İsmail Küçükbayram 6 yıl

http://www.mysqltutorial.org/getting-started-with-mysql-stored-procedures.aspx?fref=gc.. Hız bayağı değişir diye tahmin ediyorum. Tabi veritabanı sunucunun tablo yapın ve sorguna gore degısır. Eğer yapı ve sorguyu verirsen belki daha basit bir çözüm bulunur

Efe Gengeç 6 yıl

Eve geince bakacagim bunada

İsmail Küçükbayram 6 yıl

Stored procedures siz yeni bir veri ekleyene kadar önbellekleme yapar. Ekleme yaptığınızda sadece tabloyu çalıştırır, böylece performans artmış olur.

Batuhan Özdeniz 6 yıl

10 milyon veride ortalama hiz ne olur acaba ?

İsmail Küçükbayram 6 yıl

verii nasıl bir veri. Sorgu nasıl bir sorgu. İndexler nasıl. Mysql motorunun ayarları cache size vs leri işlemci vs sunucunun nasıl bunları bilmeden bir şey söyleyemeyiz.

Efe Gengeç 6 yıl

Veri ornek => kat_id 1-45 aradi bulunmakta arama adli sutun ise araba halici oglu mobilya gibi kelime veya cumleler bulunmakta, sorgu ustte atmistim zaten eslesen 45 icerigi cekiyorum. İndexler kat_id ve arama sutunu ayni index icinde mysql motoru ayarlarinaa bakmadim maalesef

İsmail Küçükbayram 6 yıl

kat id 1-45 yani string olarak mı tutuyorsunuz

Efe Gengeç 6 yıl

Hayir int olarak tutuluyor

İsmail Küçükbayram 6 yıl

1-45 min 1 max 45 anlamina geliyor

İsmail Küçükbayram 6 yıl

Yani 1 ile 45 arasi kat id leri tutuyorum

İsmail Küçükbayram 6 yıl

nedense iiçimden bir ses. Veritabanı yapınız yanlış gibime geliyor n muhabbeti

Efe Gengeç 6 yıl

Yanlislik birsey sanmiyorum tabloda 6 sutun var 2 si bunlar 1 tane id sutunu 1 tane userid 1 tane tarih ve 1 tane ip baska birsey bulunmamakta

İsmail Küçükbayram 6 yıl

genel 1 yapıyı sql export yapıp atarmısın bakalım

Efe Gengeç 6 yıl

1 dk bekleyin

İsmail Küçükbayram 6 yıl

CREATE TABLE `im_markalar` ( `id` int(11) NOT NULL, `userid` int(11) NOT NULL, `markaid` int(11) NOT NULL, `markaname` varchar(256) COLLATE utf8mb4_unicode_ci NOT NULL, `tarih` int(11) NOT NULL, `ip` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; #

İsmail Küçükbayram 6 yıl

INSERT INTO `im_markalar` (`id`, `userid`, `markaid`, `markaname`, `tarih`, `ip`) VALUES (1, 1, 1, 'arabam', 0, '111'), (2, 1, 40, 'araba', 1499241899, '1232'), (3, 1, 22, 'vxih', 1499241899, '1232'),

İsmail Küçükbayram 6 yıl

ALTER TABLE `im_markalar` ADD PRIMARY KEY (`id`), ADD KEY `markaid` (`markaid`,`markaname`(191)), ADD KEY `userid` (`userid`); #

İsmail Küçükbayram 6 yıl

tablo - veri ekleme - indexler

İsmail Küçükbayram 6 yıl

Bu tabloda çalıştırdığın sorguyu ve amacını da yazar mısın?

Burak Gozutok 6 yıl

SELECT * FROM tablo WHERE markaid IN(?,?,?,?,?,?,?) AND markaname LIKE araba LIMIT 45 #

İsmail Küçükbayram 6 yıl

Bu şekilde sorgu index kullanamıyor görünüyor.

Burak Gozutok 6 yıl

Burak Gozutok aynen

Efe Gengeç 6 yıl

NASIL Kullanmam gerekli yanlış olan ne ?

İsmail Küçükbayram 6 yıl

IN i kaldırıp tek id verince kullanıyor. Ne yapmaya çalıştığını söyleyebilir misin tam olarak? Hem markaid verip hem markaadi like la aramak biraz değişik geldi bana.

Burak Gozutok 6 yıl

Burak Gozutok amacım kullanıcın seçtiği kategorilere göre yazdığı kelimeyi aramak.

İsmail Küçükbayram 6 yıl

markaid = kategori öyle mi?

Burak Gozutok 6 yıl

Burak Gozutok evet öyle

İsmail Küçükbayram 6 yıl

Şu şekilde dener misin? SELECT id, userid, markaid, markaname, tarih, ip FROM im_markalar FORCE INDEX (markaid) WHERE markaid IN (1, 2, 3) AND markaname LIKE '%araba%' LIMIT 45;

Burak Gozutok 6 yıl

Mümkün olduğunca SELECT * kullanmaktan kaçının.

Burak Gozutok 6 yıl

select * örnek olarak verdim normal olarak kullanmıyorum. 1-2 dk bekleyin deniyorum.

İsmail Küçükbayram 6 yıl

eve geçtiğim için projeyi pcye kuruyorum deneyince sizi etiketliyeceğim.

İsmail Küçükbayram 6 yıl

değişen birşey yok maalesef

İsmail Küçükbayram 6 yıl

Şu şekilde dener misin? SELECT id, userid, markaid, markaname, tarih, ip FROM (SELECT id, userid, markaid, markaname, tarih, ip FROM im_markalar WHERE markaid IN (1, 2, 3)) tmp WHERE markaname LIKE '%araba%' LIMIT 45;

Burak Gozutok 6 yıl

1.4 milyon veride 1 veri buluyor süre: 515 ms

İsmail Küçükbayram 6 yıl

Sunucu özellikleri nedir?

Burak Gozutok 6 yıl

1 gb ram 1ghz işlemci italya lokasyon vps

İsmail Küçükbayram 6 yıl

Disk?

Burak Gozutok 6 yıl

20 gb ssd

İsmail Küçükbayram 6 yıl

Üzerinde mysql dışında birşey çalışıyor mu?

Burak Gozutok 6 yıl

hayır .

İsmail Küçükbayram 6 yıl

daha önce sphinx search kullandınızmı ?

İsmail Küçükbayram 6 yıl

Elastic kullanmıştık

Burak Gozutok 6 yıl

elastic ücretlimidir ve benim sistueme uygunmudur sizce ?

İsmail Küçükbayram 6 yıl

ücretsiz, uygundur neden olmasın. Biz detaylı cv arama için kullanmıştık

Burak Gozutok 6 yıl

bir türlü uygun sistemi bulamadım 2-3 saattir araştıyorum özelden ekleyip yardım edebilirmisiniz acaba

İsmail Küçükbayram 6 yıl

yalnız bu 500 ms sorguya network süresi dahil mi hariç mi o da önemli. Bence sunucu konfigurasyonunu da yükseltmekte fayda var. Bu kadar yopun data olacaksa sürekli hayatta kaldırmaz zaten

Burak Gozutok 6 yıl

şuan 1 local ve 1 test sunucusunda deniyorum proje bitince daha iyi bir sunucuya geçirirliecek

İsmail Küçükbayram 6 yıl