для некаторых (не вельмі зразумела, мае прычыны) Я не змог абнавіць POSTGRESQL дэман ў размеркавальным абнавіць адзін з маіх сервераў Debian. Postgresql дэман прыемная асаблівасць ня пачаў выкарыстоўваць новую версію (у адрозненне ад Mysql) у той час, як не пераканаць, новы цалкам сумяшчальны з запускам – надзвычай карысна для вялікіх баз дадзеных. Працэсу абнаўлення абмяжоўваецца наступнымі велічынямі 2 крокі:

  • pg_dropcluster
  • pg_upgradecluster

Перад izdropite пг кластара дэман павінен быць спынены!

pg_dropcluster 9.4 main

Тази команда преминава бързо, след което преминаваме към съществената частсамият ъпгрейд

pg_upgradecluster 9.1 main
Disabling connections to the old cluster during upgrade...
Restarting old cluster with restricted connections...
Creating new cluster 9.4/main ...
config /etc/postgresql/9.4/main
data   /var/lib/postgresql/9.4/main
locale en_US.UTF-8
Flags of /var/lib/postgresql/9.4/main set as -------------e-C
port   5433
Disabling connections to the new cluster during upgrade...
Roles, databases, schemas, ACLs...
Fixing hardcoded library paths for stored procedures...
Upgrading database postgres...
Analyzing database postgres...
Fixing hardcoded library paths for stored procedures...
Upgrading database template1...
Analyzing database template1...
Fixing hardcoded library paths for stored procedures...
Upgrading database xpqt...
Analyzing database xpqt...
Re-enabling connections to the old cluster...
Re-enabling connections to the new cluster...
Copying old configuration files...
Copying old start.conf...
Copying old pg_ctl.conf...
Copying old server.crt...
Copying old server.key...
Stopping target cluster...
Stopping old cluster...
Disabling automatic startup of old cluster...
Configuring old cluster to use a different port (5433)...
Starting target cluster on the original port...
Success. Please check that the upgraded cluster works. If it does,
you can remove the old cluster with

pg_dropcluster 9.1 main

Ако всичко е минло гладко трябва да получите съобщение като горното което ви подканва да разкарате старите данни от pg.

pg_dropcluster 9.1 main

В края на тая тарпана вече можете да стартирате процеса си отново. При мен базите са малки и за съжаление не мога да дам оценка за колко време преминава същественият ъпгрейд.

Бо на мінулым тыдні купіў ўсталёўшчык фантастыкі делюкс, які, на маю сціплую думку, з'яўляецца адным з найбольш прыстойным для сервераў Cpanel. Мы ўсталявалі яго і праходзяць усе прайшло гладка. Сёння кліент распавёў мне аб праблеме з кадаваннем WordPress ўстаноўкі. Праз рэчы і адразу ж свяціліся праблемных баз былі Latin1 кадавання па змаўчанні UTF8 замест таго, каб прыняць на сябе. Яшчэ больш весела, што PHPMyAdmin пісаў і выкарыстоўваецца па змаўчанні UTF8, тэатр. Я вырашыў праглядзець файлы фантастыку-яе, каб убачыць, калі ёсць дзе-то, дзе я магу знайсці сябе налады базы дадзеных па змаўчанні спачатку нічога не бачыў. Потым нешта Tekna мяне, каб убачыць, што ў my.conf-і што паглядзець не было ніякіх адпаведных настроек ў канфігурацыі і ўсе яго агні на любы усталёўваецца па змаўчанні. сервер Mysql hardkodnat выкарыстоўваць UTF8, калі ён не наладжаны з іншымі параметрамі і Fantastico-то, відавочна, Latin1 ( які даволі дурное рашэнне). Рашэнне, як заўсёды, трывіяльна дадаць 2 парадак у [туздЫ] часста каб апынуцца UTF8 ў якасці кадоўкі па змаўчанні, і ўсё засынае 🙂

character-set-server=utf8
collation-server=utf8_general_ci

У мяне няма ні найменшага падання, па якой прычыне я прапусціў гэтыя параметры пры ўмове, што я гуляў, каб зрабіць некалькі “тонкія” налады mysql-а.

падтрымліваючы Zemanta

Image representing MySQL as depicted in CrunchBase

Некаторы час таму я пісаў пра MySQL паўнатэкставы пошук 🙂 Сёння ў мяне быў вельмі цікавы досвед з адным запытам. У агульным выпадку, калі праграма выконвае пошук вынікаў, якія адчувае недахоп у іншы табліцы. Выбераце адзін асноўны і дапаможны абраны ў WHERE часткі прыкладання. Увогуле і шкілетам

SELECT DISTINCT (
`field`
)
FROM `table1`
WHERE `someID` =44
AND `firsTextField` NOT
IN (

SELECT DISTINCT (
`secondTextField`
)
FROM `table2`
WHERE `otherID` =44
)

Увогуле, элементарна запыце. Я напісаў гэта для 30 сек запусціць яго, і затрымаўся машыну. Пасля таго, як доўга і цярпліва чакаючы з майго боку ці толькі ~ 43 сек . Ён сплюнуў вынік лол . пффф дурдом. Увайсці працэсар машыны Паглядзіце, як правіла, занятыя амаль халастыя абароты. Шок і жах. Выканаць зноў зноў запытаць той жа вынік. ебать WTF. Запусціце прыкладанне і растлумачыць усё, свеціцца – толькі другое поле secondTextField паўнатэкставы пошук без індэкса, і ёсць сціплы паднос каля 35K радкоў. хто чытаў – поўны пошук тэксту не е індэкс. Ужо ясна, праблема хутка адзін

ALTER TABLE `links` ADD INDEX ( `linkUrlID` ) 

І ўсё ўстала на месца заняў запыт 0.0005 сек 😀

Будзьце асцярожныя, як вы кладзеце індэксы іх залежаць ад вашага запыту лімітавай хуткасці.

p.s Като цяло аз съм си крив за горната ситуация не само защото липсва индекс ами защото не ползва full text search метода 😀

падтрымліваючы Zemanta

Учора пасля абнаўлення версіі MySQL, Сервер бачыў мяне пачаў крычаць на мяне, што ёсць табліца, якая не была зачынена чыста і мае патрэбу ў рамонце і г.д.. глупства, што будзе гэтая табліца, Тым не менш у мяне ёсць 30-то на гэтым серверы. Адным з варыянтаў з'яўляецца, каб убачыць у лог-х гадоў, што ён размаўляе па гэтым пытанні і выканання рамонту табліцы або іншы варыянт – на сённяшні дзень, тым лепш – Гэта запусціць рамонт, праверка і аптымізацыя ўсіх табліц. Гэта дазволіць выкарыстаць інструмент mysqlcheck. Общо взето вариантите в случая са като и двете коменди са синонимни една на друга:

mysqlcheck -Aor -u root -p

mysqlcheck -u root -p --auto-repair --check --optimize --all-databases

Общо взето, която и от двете команди да използвате, ефектът ще е еднакъвароматична поправка, проверка и оптимизация на всички таблици. След като напишете която и да е от двете команди, ще бъдете попитани за root паролата на mysql server-a ви.