分类目录归档:Databases

[ PGsql ]


为什么PostgreSQL的回滚是瞬间完成的?

pg数据库的回滚是瞬间完成的。看到这句话是不是觉得pg很先进,确实是这样,但是也是有代价的,下面聊一聊这个问题。
事务的回滚和数据库的MVCC机制是分不开的,先看看以oracle和mysql为代表的基于undo表空间实现的mvcc。 以mysql为例,mysql undo两个最重要的功能,一个是实现了写不阻塞读,或者说是mvcc,另外一个当然就是事务的回滚。
MySQL在进行数据操作时,先将数据备份到undo段中,然后再进行数据的修改,这样未提交的数据会保存一份前镜像在undo中,同时数据行上的rollpointer指针指向undo段上的老数据

< Read more >

[ pymongo的使用 ]


Pymongo基本使用

from pymongo import MongoClient from django.conf import settings

查询

# 1. 分页
res = collection.find({}, {"_id": 0}).limit(limit).skip(offset)

# 2. 查询, 并限制返回字段
# 前面括号是条件, 后面括号为限制返回字段(0不返回, 1返回)
res = collection.find_one({"user_id": pk}, {"_id": 0})

新增

# 1. 插

< Read more >

[ mysql开启binlog ]


my.cnf

[mysqld]
port=3306
server-id=1
log-bin=mysql-bin
binlog_format=row
binlog-do-db=shopping_mall_main

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4

docker-compose.yml

version: '3'

services:
  db:
   

< Read more >

[ Mysql测试用 ]


INSERT INTO `tb_user` (`password`, `last_login`, `is_superuser`, `username`, `first_name`, `last_name`, `email`, `is_staff`, `is_active`, `date_joined`, `create_time`, `update_time`, `version`, `delete_token`, `phone`, `gender`, `token`, `status`)
VALUES ('pbkdf2_sha256$390000$GUWtpz0MfJtNvRGzVI

< Read more >

[ Mysql8用户连接配置 ]


  1. 先使用mysql数据库 use mysql;

  2. 运行远程连接 GRANT ALL ON . TO 'root'@'%'; GRANT REPLICATION SLAVE ON . TO 'root'@'%';

  3. 查看所允许的访问地址

  4. 修改所允许的访问地址,即可 update user set host='%' where user='root';

  5. 查看密码加密方式 select host, user, plugin from user;

  6. 修改密码的加密方式 alter user 'root'@'%' identified with mysql_native_passwor

< Read more >

[ Mysql事务 ]


事务嵌套的两种方法

参考事务操作

-- 第一个事务 --
BEGIN;
    update yyy;
        -- 第两个事务 ---
        begin;
            update xxx;
        commit;
    update zzz;
commit;

注意事项:

正常情况下mysql不存在事务的嵌套 当第一个事务执行, 遇到了第二个事务begin等代码 就会自动把第一个事务提交,去执行第二个事务 执行完第二个事务, 后面的代码相当于是没有事务了 导致割裂

场景1

  1. 融入外界的事务

    相当于把内部事务的begin, commit删除了 相

< Read more >

[ Mysql数据库备份 ]


基本操作

mysqldump -u root -p[密码] --databases 库名1 [库名2] ... > /备份路径/备份文件名.sql   
#导出的就是数据库脚本文件

例:
mysqldump -u root -p --databases liu > /opt/kgc.sql       #备份一个kgc库
mysqldump -u root -p --databases mysql li > /opt/mysql-kgc.sql    #备份mysql与 kgc两个库

尝试使用sh脚本备份docker里的mysql

# 保留10天数据,
# mysql8

< Read more >

[ Python使用ElasticSearch官方包 ]


1. 安装

  • pip install elasticsearch
  • pip install elasticsearch==7.13.1
  • 官方

2. 基本使用

参考文档 - 百度文档1 - 百度文档2 - 百度文档3

# from django.shortcuts import render
from elasticsearch import Elasticsearch
es = Elasticsearch(hosts=["http://localhost:9200"],
                   sniff_on_start=True, sniff_on_con

< Read more >

[ ElasticSearch基础 ]


Es基础操作

官方文档

Python的官方文档

前提条件

  1. 安装es
  2. kibana
  3. ik分词器

索引的操作

  • 相当于表

创建 修改(不允许) 判断是否存在 查询

# 创建索引
# PUT 索引名称
PUT test_index

# PUT 索引 不允许修改索引信息
# aliases 别名
PUT test_index_1
{
  "aliases": {
    "test1": {}
  }
}

# DELETE 删除索引
DELETE test_index_1



# HEAD索引 http状态码 200, 404
head test_i

< Read more >

[ Docker安装ElasticSearch和Kibana ]


Docker下安装ES 参考文档

一. 7.11.1版本

  1. 拉取Docker镜像
docker pull elasticsearch:7.11.1
  1. 启动镜像
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -d elasticsearch:7.11.1
  1. 测试是否成功
http://localhost:9200
  1. 安装IK分词器 4.

< Read more >