mysql 多路复用_IO多路复用,数据库mysql

协程:

单线程下由应用程序级别实现的并发,即把本来由操作系统控制的切换+保存状态,在应用程序里实现

协程的切换vs操作系统的切换

优点:

切换速度远快于操作系统

缺点:

一个任务阻塞了,其余的任务都无法执行

Ps:只有遇到IO才切换到其他任务的协程才能提升单线程的执行效率

把耽搁线程的IO降到最低,最大限度的提升单个线程的执行效率

实现方式

From gevent import spawn,monkey;monkey.patch.all()

IO模型:

block io 阻塞io

nonblocking io 非阻塞io

1、对cpu的无效暂用率过高

2、不能及时反馈客户端的信息

1、IO多路复用

服务器:

server =socket(AF_INET, SOCK_STREAM)

server.bind(('127.0.0.1',8080))

server.listen(5)

server.setblocking(False)

data_dic={}

read_list=[server,]

write_list=[]print('start....')whileTrue:

rl,wl,xl=select.select(read_list,write_list,[]) #read_list=[server,conn1,conn2,conn3,conn4]#select.select是系统调用功能,是操作系统问,当没有秒数的时候会堵塞,当有秒数时会等#到几秒内没有用户访问,就运行下面的内容,然后再返回到这个等待地方#rl 有数据的列表套接字 里面有一个server 后期有多个conn

#print('read_list:%s rl:%s wl:%s ' %(len(read_list),len(rl),len(wl))) #rl=[conn1,conn2]

for sk inrl:if sk ==server:

conn,addr=sk.accept()

read_list.append(conn)else:#sk.recv(1024)

#print(sk)

data=sk.recv(1024)

write_list.append(sk)

data_dic[sk]=data#sk套接字,data消息内容

for sk inwl:

sk.send(data_dic[sk].upper())

data_dic.pop(sk)

write_list.remove(sk)

客户端:

importsocket

chile=socket.socket()

chile.connect(("127.0.0.1",8080))whileTrue:

msg= input(">>:").strip()if len(msg)==0:continuechile.send(msg.encode("utf-8"))

func=chile.recv(1024)print(func.decode("utf-8"))

异步IO效率最高

2、数据库mysql

数据库本质就是一个C/S的套接字软件

常见的数据库:

关系型:

Mysql

Mariadb

Oracle

Db2

Sqlserver

非关系:

存取数据都是以key:value

Mongodb

Redis

Memcache

2.1、数据库相关概念:

数据库服务器:运行有数据库管理软件的计算机

数据库管理软件mysql:就是一个套接字服务器

库:就是一个文件夹

表:就是一个文件

记录:就相当于文件中的一行内容(抽取事物一系列典型的特征拼接到一起)

数据:用于记录现实世界中的某种状态

下载mysql数据库

解压完就是安装完毕

42866040de99ba2a2a00b1429536dc4f.png

Bin存放可执行文件

其中mysqld.exe就是套接字服务端,mysql.exe为mysql自带的客户端软件

Data里面一个文件夹就是一个库,ib_logfile数据日志文件

my-default配置文件

c3e096e8f32ea9eb1656f3fa4cd6c102.png

切换到E盘的mysql文件

6fc5eb42d27df6df0f94bce2ca4ff81a.png

启动服务器

绑定IP,端口,默认127.0.0.1,3306

1f46cbbc84c12c29ed12a33cfdd7cb00.png

h为服务端IP,大P为端口号,密码有空格,p后面要加引号

4cabd91940da3f5885d979ce6d54f320.png

查看当前登入的用户,root@localhost 表示着用户root登入的是本地

7d6c380b8455d39ae90f2c73defbf8c2.png

显示登入的是两个进程,在本地,服务端是19008上面的,下面的是客户端16980

7a7a794a03a7e23f8f95a096b99352d0.png

按quit;退出,然后mysqld --verbose --help配置文件,要远程服务端,服务器地址就不要是默认的127.0.0.1,而是服务器地址

225c28803707aedf49c93ee9a2897a0b.png

绑定ip“0.0.0.0”是只要拼通就都能访问到本机

be0b911fd37e7140085375d6d9cb26d8.png

c6b84e6a813f65270fcab1f16d5fcece.png

通过mysqld --install将服务器添加到服务端,这样可以直接在上面运行

8bdca0acfb5a64e3dea0b30f0cd07d35.png

\s查看mysql的字符编码

d0608050a990e85e77314dc70d6c285e.png

字符编码不一致

3b81ce677a382934ff3a845abc7558e5.png

可以通过新建my.ini里面统一字符编码设置

[mysqld]#bin目录下的命令名,服务器

character-set-server=utf8

collation-server=utf8_general_ci

[client]#也是针对于客户端,客户端的全局性配置,所有客户来都加载这个

default-character-set=utf8

[mysql]#客户端

default-character-set=utf8

Mysql removed 初始化服务器 服务器里的mysql被删,要重新mysql --install添加

只有修改mysqld里面的内容才需要重启服务端

14ab19939f9127ba2dd8222509171529.png

指定用户默认账户

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值