![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 884 Pomógł: 231 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Jakoś nie jest zbyt dużo informacji na ten temat, ale czy warto korzystać SQLite na poziomie publicznej strony PHP. Chodzi mi o przypadek, gdzie użytkownik ma wiele opcji zapisane w bazie MySQL, PgSQL i zamiast odpytywać o każdą opcję bazę (czasem jest taka potrzeba) to czy nie lepiej odpytywać bazę SQLite, gdzie tabela jest zapisana w pamięci? Mówię tutaj o połączeniu sqlite::memory: tj. dalej.. mamy np. kilkadziesiąt różnych pozycji autoryzacji miejsc na stronie, można np. zrzucić do zmiennej, utworzyć obiekt który będzie przenoszony między klasami - jest to najpopularniejsza forma. Jednak nic nie wiem o tej drugiej formie czyli tworzeniu w pamięci bazy SQL która do zakończeniu skryptu można ją odpytywać. Czytając dowiedziałem się że nie dość że odciążamy bazę od wielokrotnych "bzdurnych" zapytań to jeszcze są one szybsze. Ale na ile w tym prawdy? |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
sqllite memory dziala w obrebie skryptu. Jak zamkniesz skrypt to to co wrzuciles do pamieci wyleci w kosmos.
Moze zamiast tak kombinowac moze poppraw strukture bazy? Opcje usera sa w mysql i pgsql jednoczesnie? No to cos nie tak ze struktura (IMG:style_emoticons/default/wink.gif) |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 884 Pomógł: 231 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) ![]() ![]() |
Nie, nie... mysql i pgsql to przykład. Albo ta baza, albo ta.
Doskonale wiem, że po zamknięciu skryptu dane idą jak to ująłeś w kosmos, albo chodzi o to czy warto korzystać z tej techniki? Korzystanie z bazy SQLite memory przez krótki czas. Chociaż powiem, że mając pod opieką bazy danych zaprojektowane jeszcze w 2002 roku, to męczy czasem problematyczne odpytywanie bazy danych skomplikowanymi zapytaniami. A przeprojektowanie nie wchodzi w grę, zbyt dużo wysiłku i kosztów. Ten post edytował Tomplus 2.03.2018, 15:57:42 |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Po co? skoro sam wiesz ze to dziala tylko na czas skryptu to po grzyba chcesz tam cos pchac? Przeciez by najpierw wepchac i tak musisz wpierw pobrac to z mysql. Czyli pobierzesz z mysql, wrzucisz do memory, a potem pobierzesz ponownie z memory. Czemu wiec nie pobrac od razu tylko raz z mysql? Sztuka dla sztuki?
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 884 Pomógł: 231 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) ![]() ![]() |
No dobrze, ale przykładowo.
Musisz pobrać z bazy dane dla użytkownika jest ich przykładowo 100. Mają je już w pamięci jako tablica lub obiekt chcę szybko wyłuskać konkretne rekordy, a za chwilę jeszcze inne z pobranej puli informacji. Mogę wykonać dwa zapytania do MySQL, ale mogę odwołać się zapytaniem SQL do pamięci, gdzie utworzyłem sobie tymczasową bazę. Po zapisie do memory, pobrane dane z bazy MySQL usuwamy. Innym przykładem jest przy tablicach wielowymiarowych, gdzie nie znamy klucza, a znamy jaką wartość z głębszych rejonów tablicy. Zwykle pomaga w takich przypadkach taka funkcja: array_search($needle, array_column($array, 'key')); ale ile razy nie trzeba było więcej napocić się aby uzyskać jakąś informację. Oczywiście zgadzam się z tym że bez sensu jest stosować tą technikę w prostych przykładach/stronach. Ten post edytował Tomplus 2.03.2018, 16:22:43 |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat ale mogę odwołać się zapytaniem SQL do pamięci, gdzie utworzyłem sobie tymczasową bazę. yhm... a powiedz mi prosze kiedy utworzyles sobie te tymczasowa baze oraz na podstawie czego?Cytat Po zapisie do memory, pobrane dane z bazy MySQL usuwamy. A, a to juz w ogole odlot... przeciez ustalilismy juz, ze memory to tylko baza tymczasowa. Skasujesz z mysql, memory wyleci w kosmos i co? W magiczny sposob dane usera beda sobie pobierane z kosmosu? (IMG:style_emoticons/default/wink.gif)
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 884 Pomógł: 231 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) ![]() ![]() |
Czepiasz się słówek (IMG:style_emoticons/default/tongue.gif)
Ale przykład:
Chodzi o to że za każdym wywołaniem skryptu, tworzysz znowu taką tymczasową bazę. Tu pytanie, czy jest to sensowne, czy lepiej odpytywać MySQL częściej w sprawie precyzyjnych odpowiedzi. Ten post edytował Tomplus 2.03.2018, 16:29:19 |
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Nie czepiam sie slowek. Staram ci sie najdelikatniej jak tylko potrafie powiedziec, ze pleciesz bzdury (IMG:style_emoticons/default/tongue.gif)
Cytat Chodzi o to że za każdym wywołaniem skryptu, tworzysz znowu taką tymczasową bazę. No i po raz kolejny sie pytam: no po jaka cholere? By otworzyc te baze za kazdym razem to musisz ja miec z czego utworzyc. W przypadku co opisales musisz pobrac wiec wpierw dane z mysql, utworzyc baze memory, pobrac dane z bazy memory. I to wg. ciebie ma byc szybsze niz pobranie tylko raz danych z mysql? No nie rozumiem.Cytat Innym przykładem jest przy tablicach wielowymiarowych, gdzie nie znamy klucza, a znamy jaką wartość z głębszych rejonów tablicy. Zwykle pomaga w takich przypadkach taka funkcja: array_search($needle, array_column($array, 'key')); ale ile razy nie trzeba było więcej napocić się aby uzyskać jakąś informację. A to juz jest zupelnie inny przypadek, gdzie w pewien sposob musisz zindeksowac swoja tablice tak by w szczegolnym wyszukiwaniu bylo szybciej. Rownie dobrze mozesz utworzyc kolejna tablice ze swoimi indexami i co najsmieszniejsze ona tez bedzie w memory. Po co wiec zaprzegac do tego mysqli?
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 6 381 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Mysql też ma silnik memory więc po co tak przerzucać? Sam sqlite jest natomiast dużo szybszy dla połączenia i prostych operacji.
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 884 Pomógł: 231 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) ![]() ![]() |
@viking
Swoją drogą zrobiłem test, i tworząc taką bazę na silniku memory pojawia się na listingu tabel tymczasowo taka tabela, tylko właśnie czy gdy inny użytkownik utworzy taką samą, to nie będzie konfliktu. @nospor Właśnie celem jest aby nie zaprzęgać bazy mySQL czy pgSQL zbyt często do pracy, tj. właśnie wtedy gdy wykonuje się dużo pojedynczych połączeń z bazą danych, szczególnie gdy są to skomplikowane zapytania. Ogólnie szukam zastosowania tej techniki i prócz tego co tutaj przedstawiłem, nie mogę znaleźć innego zastosowania, a myślę że jest to użyteczne. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 2.10.2025 - 00:39 |