powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / deadlock при свипе
4 сообщений из 79, страница 4 из 4
deadlock при свипе
    #39750118
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv,

Так это как раз ODBC. ODBC тупой и не позволяет указывать, что транзакция read-only. Точнее сказать, он вообще не позволяет вручную начать транзакцию. Выполнение любого запроса автоматом начинает транзакцию, которая продолжается до вызова SQLEndTran.

Количество коннектов к базе всегда фиксировано (15-20 в зависимости от конфигурации) и не зависит от количества пользователей. К этой таблице долбятся только при первом подключении. Это не более нескольких сотен запросов в сутки.

В общем, ситуация на месте такая: сисадмин не разобрался в чём проблема, но диск самопроизвольно ускорился раз в 60 )) Когда скорость диска нормальная, то не наблюдается проблем ни с тормозами, ни с deadlock-ом. Имеет смысл запускать трейс в этой ситуации?
...
Рейтинг: 0 / 0
deadlock при свипе
    #39750135
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvвсё неправильно.
...


Спасибо! Поставлю в рамочку! :)
...
Рейтинг: 0 / 0
deadlock при свипе
    #39750137
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDenсисадмин не разобрался в чём проблема, но диск самопроизвольно ускорился раз в 60Батарейка в рейде зарядилась ? :)

Трейс нужно запускать, когда есть проблемы или когда проводится исследование.
От наших советов в данном случае ничего не зависит.

Простой deadlock, без дополнительных кодов ошибки, означает либо ошибку в программе, которая показывает
статус-вектор (говорили об этом в прошлый раз), либо что-то уж совсем необычное (и неправильное) в движке.
...
Рейтинг: 0 / 0
deadlock при свипе
    #39750146
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvlad,

Кстати, да. Возможно что и в случае с ODBC я не правильно инфу об ошибке вытаскиваю и она вытаскивается не вся:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
void check_odbc_ret_code(const OdbcDll &dll, SQLRETURN ret_code, SQLHANDLE handle, SQLSMALLINT type, const wchar_t *sql = nullptr)
{
	if ((ret_code == SQL_SUCCESS) || (ret_code == SQL_SUCCESS_WITH_INFO) || (ret_code == SQL_NO_DATA)) return;

	char        SqlState[6] = { 0 };
	char        Msg[SQL_MAX_MESSAGE_LENGTH] = { 0 };
	SQLINTEGER  NativeError = 0;
	SQLSMALLINT MsgLen = 0;
	SQLRETURN   rc = 0;
	lib::StringBuilder text;
	std::wstring sql_state;

	for (int i = 1;; i++)
	{
		rc = dll.SQLGetDiagRecA(type, handle, i, (SQLCHAR*)SqlState, &NativeError, (SQLCHAR*)Msg, SQL_MAX_MESSAGE_LENGTH, &MsgLen);
		if (rc != SQL_SUCCESS) break;
		text << i << L"). " << L"SqlState: " << lib::utf8_to_wstr(SqlState) << L"\n\nMsg: " << lib::utf8_to_wstr(Msg) << L"\n";
		if (sql_state.empty()) sql_state = lib::utf8_to_wstr(SqlState);
	}
...


Есть тут спецы по ODBC?
...
Рейтинг: 0 / 0
4 сообщений из 79, страница 4 из 4
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / deadlock при свипе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]