Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Server Estatus.
Ingrese al administrador gráfico “pgAdmin3” de PostgreSQL y conéctese a la base
de datos “secsalud”, verifique que esta se encuentra correctamente creada. En el
explorador de objetos de la ventana principal del “pgAdmin3” seleccione la base de
datos de la “secsalud”, posteriormente diríjase
di ríjase al menú “tools” y seleccione la opción
“Server Status”.
• La sección “Locks” suministra información sobre los bloqueos que están activos
en PostgreSQL.
BEGIN TRANSACTION;
SELECT * FROM estadopersona WHERE descripcion = 'Cesante' FOR
UPDATE;
UPDATE estadopersona
SET descripcion = 'En Mora'
WHERE descripcion = 'Cesante';
INSERT INTO estadopersona (descripcion) VALUES ('Registrado');
INSERT INTO estadopersona (descripcion) VALUES ('N/R');
COMMIT;
Vuelva a la ventana del “Server Status” y pulse el botón “Refresh” que tiene el
siguiente icono. Inmediatamente se visualizará en la sección “Locks” la información
sobre los bloqueos que ha generado esta sentencia.
Creación de transacciones en el SMBD PostgreSQL
Sentencia No.1:
BEGIN TRANSACTION; SELECT * FROM estadopersona WHERE descripcion = ‘Cesante’ FOR
UPDATE; UPDATE estadopersona SET descripcion = ‘En Mora’ WHERE descripcion = ‘Cesante’;
INSERT INTO estadopersona (descripcion) VALUES (‘Registrado’); INSERT INTO estadopersona
(descripcion) VALUES (‘N/R’); COMMIT;
Las operaciones que están dentro de una transacción tienen la característica que al
ejecutarse se completan todas o ninguna, para verificar esto realice una consulta
sobre los registros de la tabla “estadoeps” posteriormente ejecute la sentencia de la
siguiente transacción en una ventana del “SQL Editor”:
Sentencia No.2:
BEGIN TRANSACTION;
SELECT * FROM estadoeps WHERE idestadoeps=1 FOR UPDATE;
UPDATE estadoeps
SET descripcion = 'Operando'
WHERE descripcion = 'Activa';
SELECT * FROM estadoeps WHERE idestadoeps=2 FOR UPDATE;
UPDATE estadoeps
SET descripcion = 'Suspendida'
WHERE descripcion = 'Desactivada';
COMMIT;
Sentencia No.3:
BEGIN TRANSACTION;
SELECT * FROM estadoeps WHERE idestadoeps=1 FOR UPDATE;
UPDATE estadoeps
SET descripcion = 'Operando'
WHERE descripcion = 'Activa';
INSERT INTO estadoeps (descripcion) VALUES ('N/R');
ROLLBACK;
SELECT * FROM estadoeps WHERE idestadoeps=2 FOR UPDATE;
UPDATE estadoeps
SET descripcion = 'Suspendida'
WHERE descripcion = 'Desactivada';
COMMIT;
Posteriormente realice una consulta sobre la tabla “estadoeps” y observe que las
operaciones UPDATE e INSERT que están antes del ROLLBACK no fueron
confirmadas, mientras que los cambios indicados por la operación UPDATE que
esta después del ROLLBACK fueron escritos correctamente en la tabla.
Después de la ejecución del código
Deshacer selectivamente los cambios de una transacción en el SMBD PostgreSQL
Sentencia No.4:
BEGIN TRANSACTION;
--Agregamos un nuevo servicio
INSERT INTO tiposervicio (descripcion) VALUES ('Oncologia');
--Agregamos una nueva eps y definimos un primer punto de re torno
SAVEPOINT retorno1;
INSERT INTO eps (nombre, estadoeps) VALUES ('SANITAS',1);
--El nombre de la eps ingresada es “COLSANITAS” y no “SANITAS”
esta ya existe en la base de datos, por tanto usamos el
“retorno1” para deshacer la operación INSERT.
ROLLBACK TO retorno1;
--Ingresamos el nombre de la eps como es correcto.
INSERT INTO eps (nombre, estadoeps) VALUES ('COLSANITAS',1);
--Finalmente agregamos el servicio de oncología a las EPS que
lo prestan
INSERT INTO servicioeps VALUES (1,11,'A',300000, 'Unidad de
medicina especializada');
INSERT INTO servicioeps VALUES (4,11,'A',250000, 'Unidad de
medicina especializada');
COMMIT;
Sentencia No.5:
BEGIN TRANSACTION;
SELECT * FROM estadoeps WHERE idestadoeps=1 FOR UPDATE;
UPDATE estadoeps
SET descripcion = 'En Operacion'
WHERE descripcion = 'Activa';
SAVEPOINT retorno;
INSERT INTO estadoeps (descripcion) VALUES ('N/R');
ROLLBACK TO retorno;
INSERT INTO estadoeps (descripcion) VALUES ('No Registra');
Observe que la transacción no se ha confirmado “sin COMMIT” intencionalmente
para que podamos visualizar sus datos consultado el catalogo del sistema.
Sentencia No.6:
select * from pg_stat_activity psa RIGHT JOIN pg_stat_database psd USING(datid);
procedimiento
Gestión de bloqueos
Afinamiento del SMBD PostgreSQL para el control de bloqueos
Sentencia No.7
BEGIN TRANSACTION; SELECT * FROM historialpersona;
Sentencia No.8:
BEGIN TRANSACTION; SELECT * from historialpersona WHERE idpersona =
6611537 FOR UPDATE;
Sentencia No.9:
BEGIN TRANSACTION; LOCK TABLE historialpersona IN ROW SHARE MODE;
RowExclusiveLock: lo adquieren las sentencias UPDATE, DELETE, INSERT y
LOCK TABLE para declaraciones IN ROW EXCLUSIVE MODE.
Sentencia No.10:
BEGIN TRANSACTION; UPDATE historialpersona SET estadopersona = 1, ideps
=6 WHERE idpersona = 6611537;
Sentencia No.11:
BEGIN TRANSACTION; LOCK TABLE historialpersona IN ROW EXCLUSIVE
MODE;
Sentencia No.12:
CREATE INDEX indice ON historialpersona (idpersona);
Sentencia No.13:
BEGIN TRANSACTION; LOCK TABLE historialpersona IN SHARE MODE;
Sentencia No.14:
BEGIN TRANSACTION; LOCK TABLE historialpersona IN EXCLUSIVE MODE;
Sentencia No.15:
BEGIN TRANSACTION; LOCK TABLE historialpersona IN SHARE ROW
EXCLUSIVE MODE;
AccessExclusiveLock: lo adquieren las sentencias ALTER TABLE, DROP TABLE,
VACUUM y LOCK TABLE. Presenta conflictos con los bloqueos RowShareLock,
RowExclusiveLock, ShareLock y ShareRowExclusiveLock.
Sentencia No.16:
BEGIN TRANSACTION; ALTER TABLE historialpersona ADD COLUMN estado
VARCHAR(10);
Sentencia No.17:
BEGIN TRANSACTION; SELECT * FROM persona WHERE idpersona=
110763859 FOR UPDATE
Sentencia No.18:
UPDATE persona SET tipoidentificacion = 1 WHERE idpersona = 110763859;
Sentencia No.19:
BEGIN TRANSACTION; SELECT * FROM persona WHERE idpersona= 110763859
FOR SHARE;
Sentencia No.20:
SELECT * FROM persona WHERE idpersona= 110763859 FOR UPDATE;
Sentencia No.21:
SELECT * FROM persona WHERE idpersona= 110763859 FOR SHARE;
JMeter.
Ingrese al Apache Jmeter y cree un nuevo plan de pruebas que se denomine con
su nombre y apellido “nombre_apellido” y que tenga por comentario “secretaria de
salud”.
Consulta 1:
Listado con el número de identificación, nombre y apellido de las personas, además
del nombre de la EPS y la fecha de ingreso y salida. SELECT p.idpersona,
p.nombre, p.apellido, e.Nombre, h.fechaingreso, h.fecharetiro FROM persona p
INNER JOIN historialpersona h on p.idpersona=h.idpersona INNER JOIN eps e on
e.ideps=h.ideps ORDER BY p.apellido
Consulta 2:
Listado en que se visualiza las EPS con el nombre de los servicios que presta y el
costo de cada uno ellos. BEGIN; SELECT e.nombre, t.descripcion, s.detalle, s.valor
FROM eps e INNER JOIN servicioeps s on e.ideps=s.ideps INNER JOIN
tipoServicio t on s.idtiposervicio=t.idtiposervicio ORDER BY e.nombre COMMIT;
Consulta 3:
Listado con el número de identificación, nombre y apellido de las personas, además
del tipo de afiliación que tiene. BEGIN; SELECT p.idpersona, p.nombre, p.apellido,
t.descripcion FROM persona p INNER JOIN historialpersona h ON
p.idpersona=h.idpersona INNER JOIN tipoafiliado t ON h.tipoafiliado=t.idtipoafiliado
ORDER BY t.descripcion; COMMIT;