Tag Archives: Базы данных

Настройка производительности Postgresql — pgTune

Все, кто использовал Postgresql, знают, что его производительность очень сильно зависит от конфигурационных файлов. Чтоб их отладить, порой приходится экспериментировать не один вечер.

Но, к счастью, есть скрипты, которые позволяют сформировать первичные настройки параметров. Причем, данные скрипты с открытым исходным кодом, позволяют посмотреть исходные коды и подправить под свои задачи.

Итак:

Онлайн-сервис для расчета параметров Postgresql.

Исходные коды pgTune.
Исходные коды pgTune (продолжение разработки).


По материалам: http://habrahabr.ru/post/217073/

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

Проблемы с кодировкой в MySQL 5

Столкнулся с проблемой кодировки при переходе из MySQL 4 в MySQL 5.

Это вечная проблема, которая возникает при переходе из одной версии MySQL в другую и связана с поддерживаемыми кодовыми страницами.
При переходе из MySQL 3 в MySQL 4 была проблема с кодировками, т.к. в MySQL 3 они не указывались, а в MySQL 4 стали указываться.
При переходе же из версии MySQL 4 в MySQL 5 проблема связана с тем, что в 5-й версии уже используется универсальная кодировка utf-8.

 

В этом же форуме, я хочу подбить определённый результат, как эту проблему решить.

1. Прежде всего, нужно указать по умолчанию русские кодировки.
2. После вызова коннекта в PHP необходимо указать, что кодировка, например, cp1251

Так, например, в phpNuke я указал в файле mainfile.php после коннекта:

// Rudjuk 24.06.2007 Change Error Code
if ($db){
$db->sql_query(«set names ‘cp1251′»);
}

После этого должно работать.
Кстати, при переносе данных из одного сервера, скажем MySQL 4 на другой с MySQL 5 следует обязательно после коннекта к базе (вначале дампа) указать:
Код
SET NAMES CP1251

Еще осталась проблема с автоматическим определением кодировки.
Почему-то по умолчанию определяется на странице, что кодировка utf-8, хотя указано явно
Код
< meta http-equiv=»content-type» content=»text/html; charset=windows-1251″ />

В apache2 указывается кодировка по умолчанию в файле /etc/apache2/conf.d/charset, нужно просто вместо UTF-8 указать

AddDefaultCharset windows-1251

Что и говорить проблемы с кодировкой — часто встречаемая проблема.

Как её решить, прекрасно описано в статье: Решение проблем с кодировкой

Какая кодировка настроена в MySQL вы можете узнать с помощью запроса:
Код
SHOW VARIABLES LIKE ‘character_set_client’;

Кроме того, когда создаёте базу и таблицы не забывайте указывать кодировки, например:
Код
CREATE DATABASE inv2_neru CHARACTER SET cp1251 COLLATE cp1251_bin COLLATE cp1251_bin;
^
CREATE TABLE ibf_admin_login_logs (
admin_id int(10) NOT NULL auto_increment,
admin_ip_address varchar(16) NOT NULL default ‘0.0.0.0’,
admin_username varchar(40) NOT NULL default »,
admin_time int(10) unsigned NOT NULL default ‘0’,
admin_success int(1) unsigned NOT NULL default ‘0’,
admin_post_details text,
PRIMARY KEY (admin_id),
KEY admin_ip_address (admin_ip_address),
KEY admin_time (admin_time)
) TYPE=MyISAM AUTO_INCREMENT=84 CHARACTER SET cp1251 COLLATE cp1251_bin;
^

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

Предметная визуализация

Дизайн интерьеров

Работа с Interbase (Firebird) в PHP

Если кто-нибудь пытался искать информацию, как работать с базами данных в PHP, то как правило, натыкалася на работу PHP с MySQL. По поводу же работы с Interbase информация достаточно скудная. Более того, как правило, поисковики выкидывают информацию не по работе PHP с Interbase, а по работе Delphi с Interbase :).

Прежде всего, необходимо включить поддержку Interbase в PHP. Как это делается, скажем в Linux Ubuntu я писал: http://nerusoft.blogspot.com/2007/12/interbase-firebird-apache-2-php-5-linux.html

Теперь рассмотрим основные операторы:
// Подключение к базе данных Interbase
$conn=ibase_connect($dbname,$dbuser,$dbpass);

// Выполнение SQL-запроса и получение информации из него (аналогично, как в MySQL):
$stmt = ‘select * from GET_ZAKAZID’;
$sth = ibase_query($conn, $stmt);
while ($row = ibase_fetch_object($sth)) {
$zakazn=$row->DOCN_RETURN;
}
ibase_free_result($sth); // Освобождаем ресурсы, после получения необходимых данных

// Выполнение простой вставки с помощью INSERT
$stmt = ‘INSERT INTO ZAKAZ(ZAKAZID, ZAKAZNA, TYPEZAKAZID’
.’,EMAIL, KONT_TELEPHONE, MTELEPHONE, ICQ’
.’) VALUES (‘
.$zakazn.»,'».trim(strip_tags(@$_POST[‘date_vipoln’])).»‘,».@$_POST[‘type_cli’] .»,'».trim(strip_tags(@$_POST[’email’])).»‘,'».trim(strip_tags(@$_POST[‘telephone’])) .»‘,'».trim(strip_tags(@$_POST[‘mtelephone’])).»‘,».trim(strip_tags(@$_POST[‘icq’]))
.»)»;
$sth = ibase_query($conn, $stmt) or die(ibase_errmsg());

// Закрываем коннект, после работы с базой данных
ibase_close($conn);

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

3D визуализация и дизайн

Компиляция UDF-библиотеки rfunc в Linux Ubuntu 8 для Firebird 2

Для того, чтоб скомпилировать библиотеку rfunc для firebird 2, необходимо произвести ряд действий.

1. Установить firebird не из репозитария, а так, как написано было в предыдущем сообщении.

2. В файле rfunc.conf исправить:
GDS_NAME = fbclient
#GDS_NAME = gds32

3. Исправить в файле makefile.linux:
#RFUNCIBUTILLIB = /usr/lib/libib_util.so
RFUNCIBUTILLIB = /opt/firebird/lib/libib_util.so

4. Исправить в том же файле:
#INCLUDE = -I/usr/include -I»$(IBASE)$(SDKDIR)/include»
INCLUDE = -I/usr/include -I/opt/firebird/include

5. Установить:
apt-get install uuid-dev

6. Прокомпилить:
make -f makefile.linux rfunc

7. Появится файл библиотеки под названием rfunc в том же каталоге, где Вы компилировали.
Можете его переименовать в rfunc.so — для соблюдения стандартов в названиях файлов.

8. Полученный файл переписать в /opt/firebird/UDF.

После этого, перезагрузите сервер. Библиотека должна работать.

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

3D визуализация и интерьер

Предметная визуализация

Восстановление базы данных Postgresql

Автор: Рудюк С . А.
https://corp2.net

E-Mail: rs@corp2.net

Любая база данных выходит из строя… Пользователи забывают делать бекапы и как результат, программистам приходится возиться с восстановлением данных.
Ранее, я не однократно описывал восстановление баз данных Firebird (Interbase), но уже давно работаю с другими базами данных, поэтому, сталкиваюсь с «новыми задачами» по восстановлению информации.

Сегодня, ко мне обратился один старый клиент, у которого много лет работает база данных на Postgresql со вчерашнего дня у них стали выдаваться ошибки Page Error при входе в систему. Как результат — не возможность работы.
Зашел в PgAdmin, попробывал сделать бекап — вывались ошибки. Начал «передвигаться» по списку баз данных — вываливается огромное количество ошибок Page Error. Решили восстановить из бекапа. Как оказалось, последний бекап — за декабрь 2013 года. Пол-года пропало!
И тут меня осенило! Решил попробывать выполнить select. Проходит успешно, данные показывает без ошибки.
Ура! Подумал я себе.

Итак, как мне удалось восстановить базу без потери информации:
1. Создаю новую базу данных (с другим названием) из найденного бекапа (в данном случае, декабрь 2013г.). Проверяю входить в систему — всё отлично.
2. Сохраняю данные из каждой интересующей меня таблицы, подобными запросами:
copy (select * from zrp_zakaz ) to ‘d:\tmp\zrp_zakaz’;
3. Удаляю данные из необходимых таблиц в базе данных, которую восстановили. Например:
delete from zrp_zakaz;
4. Закачиваю данные из сохраненного файла в другой базе данных. Например:
copy zrp_zakaz from ‘d:\tmp\zrp_zakaz’;

Как результат — база восстановилась полностью, без потери данных.
Клиент счастлив, чего и следовало добиться…

Автор: Рудюк С . А. https://corp2.net

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

Дизайн интерьеров