Нужно было перед командой добавить "EXPLAIN ANALYSE ", тогда можно было узнать план запроса, не выполняя его.
UPDATE (SET a = 'foo' where field и LIKE '%pattern%')
3. Почему UPDATE не связанный с этим полем так тормозит?См. выше.
Есть таблица на 100 млн записей.
process.env.REGISTRY_SERVER || 'ws://localhost:9977'
и обрабатывает все входящие сообщения следующим образом: JSON.parse(message)
--> const { event, payload } = message
, что значит что входящие сообщения (от клиента) должны иметь формат { event: "someEventName", payload: { ... } }
. Потом это сообщение уже в виде объекта идёт в какой-то обработчик событий, который, скорее всего, распределяет этот объект по функциям-подписчикам (listeners), объявленным в других файлах. Эти функции там что-то делают с этими сообщениями, и вызывают callback sendEvent с какими-то новыми event и payload. { event: "userInput", payload: { type: "keyPress", value: "f3" } }
Затем это через router будет передано в какую-то функцию, которая, например, выяснит что персонаж сейчас стоит на клетке, которая при нажатии ф3 должна телепортировать игрока. Ещё какая-нибудь функция сделает это, и, в конце концов, будет вызван callback sendEvent, который отправит на клиент игрока сообщение { event: "characterMove", payload: { x: 123, y: 532 } }
Можно ли сделать так, чтобы запрос выполнялся дольше, но меньше загружал CPU -- может есть какие-то способы понизить приоритетность выполнения?
Есть ли встроенные механизмы кэшированая, которым можно сказать, что для запроса Х нужно отдавать данные из кэша при вызове его чаще чем N минут\часов?
ситуация когда с БД нужно собирать некоторую статистику и при этом сделать так, чтобы система не сильно тормозила
Есть ли разница джоинов этих двух строк, с точки зрения нагрузки на БД?
//http
const express = require('express');
const server = require('http')
var app = express();
var server = server.Server(app);
server.listen(3000);
//socket
Socket.io = require('socket.io')(3001, { path: '/', });
# Для стандартных пост гет запросов (запросы, естественно, будут на site/api/)
location /api/ {
expires $expires;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 30m;
proxy_connect_timeout 30m;
send_timeout 30m;
proxy_pass http://127.0.0.1:3000/; # set the adress of the Node.js instance here
}
# Для сокетов
location /socket/ {
expires $expires;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade; #для сокетов
proxy_set_header Connection "upgrade"; #для сокетов
proxy_http_version 1.1;
proxy_read_timeout 30m;
proxy_connect_timeout 30m;
send_timeout 30m;
proxy_pass http://127.0.0.1:3001; # set the adress of the Node.js instance here
# proxy_ssl_server_name on;
}
class DbConnection
{
private string $userName;
private string $password;
private string $dbname;
public function __construct(string $userName, string $password, string $dbName)
{
$this->userName = $userName;
$this->password = $password;
$this->dbname = $dbName;
}
}
class AuthController
{
private DbConnection $dbConnection;
public function __construct(DbConnection $connection)
{
$this->dbConnection = $connection;
}
}
$dbSettings = include('dbconfig.php');
$connection = new DbConnection($dbSettings['login'], $dbSettings['password'], $dbSettings['dbName'] );
$controller = new AuthController($connection);
return [
'login'=>'myLogin',
'password'=>'myPassword',
'dbName'=>'myDbName'
];