事务
四大特性
原子性:一个事务中必须要被视为是不可分割的一个最小单元,整个事务中的所有操作要么都执行成功,要么都执行失败回滚,对于一个事务,不可能只执行其中的一部分,这就是事务的原子性。
一致性:mysql数据库总是从一个一致性的状态到达另一个一致性的状态。比如在执行转账操作时,转账前两个人的总和的状态和转账后两个人的总和的状态是一致的。
隔离性:对于一个事务来说,在最终提交前,对其他的事务是不可见的。
持久性:一旦提交事务,则其所做的修改会永远的保存到数据库。即使系统崩溃,修改的数据也不会丢失
事务命令
查看表的创建语句,可以看到engine=innodb
use t1
show create table score
开启事务
begin
或者
start transaction
提交事务
commit
回滚事务
rollback
#注意:修改数据的命令会自动的触发事务,比如delete,update,insert
索引
增加删除索引
其实,primary_key就是索引,在新建表结构时规定parmary_key即可。如果要增加索引,那么请看下边: 增加索引 ALTER TABLE `student` ADD IDNEX aaa(`class_id`) #添加普通索引 删除所有 drop index aaa on student
加/不加索引--时间测试
# 往数据库增加100000条数据 from pymysql import connect def main(): conn=connect(host='localhost',port=3306,user='root',password='',database='t1',use_unicode=True) cursor=conn.cursor() for i in range(100000): cursor.execute("insert into test_index value('ha-%d')"%i) conn.commit() if __name__ == '__main__': main()
# linux下执行操作
use t1 set profiling=1 #开启时间检测
select * from test_index where title='ha-99999'
show profiles; #查询结果为0.28s
create index title_index on test_index(title(10)); #为表test_index的字段title增加索引
select * from test_index where title='ha-99999'
show profiles; #查询结果为0.07s
账户管理
# 增加用户权限
增加一个用户,只可以访问t1表中的 “查”功能 mysql -u root -p #登录root用户 use mysql #mysql中的user表是数据库的权限设置 select host,user from user #查看所有用户的权限
grant select,insert on t1.* to laowang@localhost identified by '123456' #创建laowang用户密码为123456
quit
mysql -u laowang -p #登录laowang用户
123456 #输入密码
select * from class #成功
insert into class(caption) values('九年级三班') #成功
update class set name='三年级二班' where caption=‘三年二班’ #失败
# 删除用户及权限
drop user laowang@localhost #删除laowang这个用户及权限
select host,user from user #查看,没有了老王用户
主从同步
配置主从同步
#配置主从同步步骤: 1.在主服务器上,必须开启二进制日志机制和配置一个独立的ID 2.在每一个从服务器上,配置一个唯一的ID,创建一个用来专门复制主服务器数据的账号 3.在开始复制进程前,在主服务器上记录二进制文件的位置信息 4.如果在开始复制之前,数据库中已经有数据,就必须先创建一个数据快照(可以使用mysqldump导出数据库,或者直接复制数据文件) 5.配置从服务器要连接的主服务器的IP地址和登陆授权,二进制日志文件名和位置 #简而言之版步骤: #主服务器为ubantu,从为windows 1.备份主服务器数据到从服务器; #首先进行数据库备份,再在从服务器上进行还原数据库 2.给主服务器设置一个id值; 3.给从服务器设置id值; 4.设置主服务器的日志文件 5.设置从服务器从哪里读取日志文件
链接:22世纪人工智能/数据库/课件/Python高级-全部(html版)/19day/主从.html
数据库备份与恢复
备份 mysqldump -uroot -p 数据库名称> python.sql #按提示输入mysql密码 恢复 连接mysql,创建新的数据库 退出连接,执行如下命令 mysql -uroot -p 新数据库名称 python.sql #按提示输入mysql密码