天道酬勤,学无止境

mysql优化 个人笔记 非礼勿扰 -m07

Mysql基本架构图

在这里插入图片描述

  • 两种优化方式
    RBO 基于规则优化
    CBO 基于成本优化 这个用的多

Mysql 日志

1. binlog (server)
数据库data目录下的binlog文件
在这里插入图片描述

show VARIABLES like '%binlog%'

在这里插入图片描述
binary log

恢复数据过程

  1. 找到最近的一次全量备份数据
  2. 从备份的时间点开始,将备份的binlog取出来,重放到恢复的那个时刻

2. redolog (存储引擎 innodb)
数据库data目录下有这俩文件
在这里插入图片描述

  • 当发生数据修改时,innodb存储引擎会将记录下入到redo log中,并更新
    内存,此时更新就算完成了,同时innodb引擎会在何时的时机将记录写入到磁盘中
    在这里插入图片描述
  • redo log是固定大小的 是循环写入的
    在这里插入图片描述
    • 有了redo log后 innodb就可以保证即使数据库发生异常重启,之前的记录也不会丢失 叫做 crash-safe
  • wal write ahead log
    数据写入的时候 不是直接写入磁盘 而是先写入内存 合适时机才会写入磁盘
    写入性能上感觉是提升了
  • redolog 存储的过程 三种方式
    在这里插入图片描述
    • 加入数据存储过程中 mysql服务器断电了 重启之后 会去redolog中 找日志
      然后进行重写
  • 保证实物的持久化

3. undolog(Innodb存储引擎)

  • Undo log 是为了实现实物的原子性 在Mysql数据库Innodb存储引擎中,
    还用Undo log 来实现多版本的并发控制(简称:MVCC)
  • 在操作数据之前,首先将一个数据备份到一个地方(这个存储数据备份的地方叫undo log).然后进行数据修改,如果出现了错误或者用户执行了ROLLBACK语句
    系统可以利用Undo log中的备份数据恢复到事物开始之前的状态
    注意:
    undo log 的逻辑日志,可以理解为:
  • 当delete一条数据的时候,undo log 会记录一条与之对应的insert语句
  • 当insert一条记录时,undo log会记录一条与之对应的delte语句
  • 当update一条记录时,undo log 会记录一条相反的update语句

ACID:
A(Atomicity) 原子性
C(Consistency)一致性
I(Isolation)隔离性
D(Durability)持久性

binlog redolog

  • Binlog是Server层的数据 主要做Mysql 功能层面的事情
  • 与redo 日志的区别
  1. redo 是innodb独有的 binlog是所有引擎都可以使用的
  2. redo是物理日志 记录的是在某个数据页上做了什么修改,
    binlog是逻辑日志 记录的是这个语句的原始逻辑
  3. redo是循环写的 空间会用完,binlog是可以追加的,不会覆盖之前的日志信息
  4. 数据更新流程
    在这里插入图片描述
1. 执行器先从引擎中找到数据
   如果在内存中就直接返回
   如果不在内存就查询后返回2. 执行器拿到数据后先修改  
   然后调用引擎接口重新吸入数据3. 引擎将数据更新到内存 同时写入redo log
	此时处于prepare阶段
	并通知执行器完成,随时可以操作4. 执行器将操作写入binlog5. 执行器调用存储引擎的事物提交接口,
	引擎把刚刚写完的redo 改成commit状态
	更新完成。
 注意:1.  先写redo log 再写binlog 
       redo log写完了 binlog没写呢 服务器断电了 
       重启之后redo log 恢复数据与binlog对不上      2. 先写binlog 也是一样

知识点
set @t1 = 0;select @t1; --> 0 set @t2:=3;select @t2 ; -->3

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • MySQL数据库之分库分表方案
    MySQL数据库之分库分表方案 数据库之互联网常用分库分表方案 原文: https://www.cnblogs.com/littlecharacter/p/9342129.html 一、数据库瓶颈1、IO瓶颈2、CPU瓶颈二、分库分表1、水平分库2、水平分表3、垂直分库4、垂直分表三、分库分表工具四、分库分表步骤五、分库分表问题1、非partition key的查询问题(水平分库分表,拆分策略为常用的hash法)2、非partition key跨库跨表分页查询问题(水平分库分表,拆分策略为常用的hash法)3、扩容问题(水平分库分表,拆分策略为常用的hash法)六、分库分表总结七、分库分表示例 一、数据库瓶颈 ↑ 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞吐量、崩溃)。 1、IO瓶颈第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询时会产生大量的IO,降低查询速度 -> 分库和垂直分表。第二种:网络IO瓶颈,请求的数据太多,网络带宽不够 -> 分库 。 2、CPU瓶颈第一种:SQL问题,如SQL中包含join,group by,order by,非索引字段条件查询等,增加CPU运算的操作 -> SQL优化
  • MySQL数据库之分库分表方案
    数据库之互联网常用分库分表方案 原文: https://www.cnblogs.com/littlecharacter/p/9342129.html 一、数据库瓶颈 1、IO瓶颈 2、CPU瓶颈 二、分库分表 1、水平分库 2、水平分表 3、垂直分库 4、垂直分表 三、分库分表工具 四、分库分表步骤 五、分库分表问题 1、非partition key的查询问题(水平分库分表,拆分策略为常用的hash法) 2、非partition key跨库跨表分页查询问题(水平分库分表,拆分策略为常用的hash法) 3、扩容问题(水平分库分表,拆分策略为常用的hash法) 六、分库分表总结 七、分库分表示例 一、数据库瓶颈 ↑ 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞吐量、崩溃)。 1、IO瓶颈 第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询时会产生大量的IO,降低查询速度 -> 分库和垂直分表 。 第二种:网络IO瓶颈,请求的数据太多,网络带宽不够 -> 分库 。 2、CPU瓶颈 第一种:SQL问题,如SQL中包含join,group by,order by,非索引字段条件查询等,增加CPU运算的操作 ->
  • MySQL输出html格式文件
    MySQL输出html格式文件 需求描述 :  在执行mysql命令的时候,有的时候需要将查询的结果输出到html文件,在此记录下操作的过程.1.通过tee命令结合--html输出查询结果到html文件[mysql@testvm ~]$ mysql --html #--html选项的意思产生html格式的输出. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 13 Server version: 5.7.21-log MySQL Community Server (GPL) Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
  • MySQL主从复制之异步复制
    MySQL主从复制之异步复制原文: https://www.cnblogs.com/hmwh/p/9198705.html MYSQL主从复制方式有默认的复制方式异步复制,5.5版本之后半同步复制,5.6版本之后新增GTID复制,包括5.7版本的多源复制。MYSQL版本:5.7.20操作系统版本:linux 6.7 64bit 1、异步复制 MYSQL 默认的复制方式,就是主库写入binlog日志后即可成功返回客户端,无须等待binlog日志传递给从库的过程。但这样一旦主库发生宕机,就有可能出现数据丢失的情况。 1.1搭建异步主从1、 server-id 不一样2、 开启binlog,建议开启log_slave_updates,让从库也写binlog,方便后期扩展架构3、 binlog格式为row。 主库操作:创建主从复制账号create user 'rep'@'192.16.20.%' identified by 'mysql'; grant replication slave on *.* to 'rep'@'192.16.20.%'; 初始化:mysqldump -S /tmp/mysql3307.sock --single-transaction -uroot -pmysql --master-data=2 -A > salve.sql (我全库导入的有问题
  • 【转载】 MySQL数据库“十宗罪”(十大经典错误案例)
    MySQL数据库的“十宗罪”(附10大经典错误案例) 张甦 2017-08-03 09:44:11 312 笔者在刚开始学习数据库的时候,没少走弯路。经常会遇到各种稀奇古怪的 error 信息,遇到报错会很慌张,急需一个解决问题的办法。跟无头苍蝇一样,会不加思索地把错误粘到百度上,希望赶紧查找一下有没有好的问题处理方法。我想上述这个应该是刚从事数据库的小白都会遇到的窘境。 今天就给大家列举 MySQL 数据库中最经典的十大错误案例,并附有处理问题的解决思路和方法。希望能给刚入行或数据库爱好者一些帮助,今后再遇到任何报错,我们都可以很淡定地去处理。 学习任何一门技术的同时,其实就是自我修炼的过程。沉下心,尝试去拥抱数据的世界! 案例一 Too many connections (连接数过多,导致连接不上数据库,业务无法正常进行) 问题还原: mysql> show variables like '%max_connection%'; | Variable_name | Value | max_connections | 151 | mysql> set global max_connections=1;Query OK, 0 rows affected (0.00 sec) [root@node4 ~]# mysql -uzs -p123456 -h 192.168.56.132
  • MySQL 8.0.15、5.7、5.6、5.5忘记密码重置方法
    MySQL 8.0.15、5.7、5.6、5.5忘记密码重置方法官网: https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html MySQL 8.0.15忘记密码重置方法 1.打开命令窗口cmd,输入命令:net stop mysql,停止MySQL服务, 2.开启跳过密码验证登录的MySQL服务 输入命令 mysqld --console --skip-grant-tables --shared-memory 3.再打开一个新的cmd,无密码登录MySQL,输入登录命令:mysql -u root -p 4. 密码置为空,命令如下: use mysql update user set authentication_string='' where user='root'; 5.退出mysql,执行命令: quit 6. 关闭以-console --skip-grant-tables --shared-memory 启动的MySQL服务, 7. 打开命令框,输入:net start mysql 启动MySQL服务。 8.步骤4密码已经置空,所以无密码状态登录MySQL,输入登录命令:mysql -u root -p 9.利用上一篇博客中更改密码的命令,成功修改密码,如下图: //ALTER USER
  • 【MySQL】如何对SQL语句进行跟踪(trace)?
    【MySQL】如何对SQL语句进行跟踪(trace)? MySQL 5.6.3提供了对SQL语句的跟踪功能,通过trace文件可以进一步了解优化器是如何选择某个执行计划的,和Oracle的10053事件类似。使用时需要先打开设置,然后执行一次SQL,最后查看INFORMATION_SCHEMA.OPTIMIZER_TRACE表的内容。需要注意的是,该表为临时表,只能在当前会话进行查询,每次查询返回的都是最近一次执行的SQL语句。设置时相关的参数:mysql> show variables like '%trace%';+------------------------------+----------------------------------------------------------------------------+| Variable_name | Value |+------------------------------+----------------------------------------------------------------------------+| optimizer_trace | enabled=off,one_line=off || optimizer_trace_features | greedy_search=on
  • MySQL覆盖索引(Covering Index)
    MySQL覆盖索引(Covering Index) mysql高效索引之覆盖索引 概念 如果索引包含所有满足查询需要的数据的索引成为覆盖索引(Covering Index),也就是平时所说的不需要回表操作 判断标准 使用explain,可以通过输出的extra列来判断,对于一个索引覆盖查询,显示为using index,MySQL查询优化器在执行查询前会决定是否有索引覆盖查询 注意 1、覆盖索引也并不适用于任意的索引类型,索引必须存储列的值 2、Hash 和full-text索引不存储值,因此MySQL只能使用B-TREE 3、并且不同的存储引擎实现覆盖索引都是不同的 4、并不是所有的存储引擎都支持它们 5、如果要使用覆盖索引,一定要注意SELECT 列表值取出需要的列,不可以是SELECT *,因为如果将所有字段一起做索引会导致索引文件过大,查询性能下降,不能为了利用覆盖索引而这么做 InnoDB 1、覆盖索引查询时除了除了索引本身的包含的列,还可以使用其默认的聚集索引列 2、这跟INNOB的索引结构有关系,主索引是B+树索引存储,也即我们所说的数据行即索引,索引即数据 3、对于INNODB的辅助索引,它的叶子节点存储的是索引值和指向主键索引的位置,然后需要通过主键在查询表的字段值,所以辅助索引存储了主键的值 4、覆盖索引也可以用上INNODB 默认的聚集索引 5、
  • 老男孩51CTO博客博文列表整理版20170620更新
    老男孩51CTO博客博文列表整理版(本文原自于一道考试题http://oldboy.blog.51cto.com/2561410/1860985)老男孩教育运维脱产班35期 刘同学2017-06-14 17:44:41 老男孩的MySQL私房菜新书视频1-9章先堵为快2017-05-31 16:18:09 老男孩带你了解perl正则表达式中的零宽断言2017-05-16 11:42:48 【老鸟分享】Linux命令行终端提示符多种实用技巧!2017-04-19 10:45:47 MySQL数据库多种安装方法及企业级安装实践2017-04-18 17:33:57 Oracle11G安装实践2017-04-11 21:07:48 利用Shell开发跳板机功能脚本案例2017-04-10 11:16:55 利用Shell开发跳板机功能脚本案例2017-03-28 12:13:47 人工智能冲击下,IT人员如何提前避免被淘汰?2017-03-20 18:12:18 Linux三剑客企业级经典面试题解答实战2017-03-13 18:07:07 运维人员究竟如何提升价值,持续获得高薪?2017-01-22 16:07:28 3分钟内快速部署MySQL5.6.35数据库实践2017-01-17 12:42:59 18岁的他从月薪2000到月薪11000经历了什么?2017-01-09 19
  • MySQL下的DBlink--FEDERATED引擎
    MySQL下的DBlink--FEDERATED引擎原文地址:http://blog.itpub.net/31401187/viewspace-2649520/在实际工作中,我们可能会遇到需要操作其他数据库实例的部分表,但又不想系统连接多库。此时我们就需要用到数据表映射。如同Oracle中的DBlink一般,使用过Oracle DBlink数据库链接的人都知道可以跨实例来进行数据查询,同样的,Mysql自带的FEDERATED引擎完美的帮我们解决了该问题。本篇文章介绍FEDERATED引擎的开启和使用。1.开启FEDERATED引擎若需要创建FEDERATED引擎表,则目标端实例要开启FEDERATED引擎。从MySQL5.5开始FEDERATED引擎默认安装 只是没有启用,进入命令行输入 show engines ; FEDERATED行状态为NO。mysql> show engines; +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +
  • MySQL中变量的定义和变量的赋值使用
    MySQL中变量的定义和变量的赋值使用 前言 MySQL存储过程中,定义变量有两种方式: 1、使用set或select直接赋值,变量名以@开头例如:set @var=1; 可以在一个会话的任何地方声明,作用域是整个会话,称为用户变量。2、以declare关键字声明的变量,只能在存储过程中使用,称为存储过程变量,例如: declare var1 int default 0; 主要用在存储过程中,或者是给存储传参数中。两者的区别是: 在调用存储过程时,以declare声明的变量都会被初始化为null。而会话变量(即@开头的变量)则不会被再初始化,在一个会话内,只须初始化一次,之后在会话内都是对上一次计算的结果,就相当于在是这个会话内的全局变量。 主体内容 局部变量 用户变量 会话变量 全局变量 会话变量和全局变量叫系统变量。 一、局部变量,只在当前begin/end代码块中有效 局部变量一般用在sql语句块中,比如存储过程的begin/end。其作用域仅限于该语句块,在该语句块执行完毕后,局部变量就消失了。declare语句专门用于定义局部变量,可以使用default来说明默认值。set语句是设置不同类型的变量,包括会话变量和全局变量。 局部变量定义语法形式declare var_name [, var_name]... data_type [ DEFAULT value ]
  • 在Windows 10上安装MySQL 5.5
    在Windows 10上安装MySQL 5.5 1、MySQL 5.5的安装使用 MySQL的安装文件直接点击安装,不过有比较大的概率出现2502错误和2503错误 解决方案: 1)找到目录:C:\Windows\temp2)在目录上右键----->"属性"----->"安全"3)在弹出的窗口中,点击"高级"4)在弹出的窗口中,点击"添加" 5)在弹出的窗口中,点击"选择主体"6)在弹出的窗口中,输入every,点击"检查名称",会找到"Everyone"7)点击确定后,设置Everyone的基本权限为"完全控制"8)点击确定后,可以看到多出来了"Everyone"的信息 9)点击应用后,弹出安全警告,选择"是"10)再使用MySQL的安装文件,就不会出现2502错误和2503错误啦 About Me ........................................................................................................................ ● 本文作者:小麦苗,部分内容整理自网络,若有侵权请联系小麦苗删除 ● 本文在itpub( http://blog.itpub.net/26736162 )、博客园( http://www.cnblogs.com/lhrbest
  • 在Windows 10上安装MySQL 5.5
    在Windows 10上安装MySQL 5.5 1、MySQL 5.5的安装使用 MySQL的安装文件直接点击安装,不过有比较大的概率出现2502错误和2503错误 解决方案: 1)找到目录:C:\Windows\temp2)在目录上右键----->"属性"----->"安全"3)在弹出的窗口中,点击"高级"4)在弹出的窗口中,点击"添加" 5)在弹出的窗口中,点击"选择主体"6)在弹出的窗口中,输入every,点击"检查名称",会找到"Everyone"7)点击确定后,设置Everyone的基本权限为"完全控制"8)点击确定后,可以看到多出来了"Everyone"的信息 9)点击应用后,弹出安全警告,选择"是"10)再使用MySQL的安装文件,就不会出现2502错误和2503错误啦 About Me ........................................................................................................................ ● 本文作者:小麦苗,部分内容整理自网络,若有侵权请联系小麦苗删除 ● 本文在itpub( http://blog.itpub.net/26736162 )、博客园( http://www.cnblogs.com/lhrbest
  • MySQL默认数据库之 information_schema库
    MySQL默认数据库之 information_schema库 官网: https://dev.mysql.com/doc/refman/5.7/en/information-schema.html sys 系统库中有一部分视图的数据来自information_schema。那么,什么是information_schema?information_schema组成对象又有哪些? 以下内容主要针对MySQL 5.7版本进行整理。 | 什么是information_schema information_schema提供了对数据库元数据、统计信息、以及有关MySQL Server的信息访问(例如:数据库名或表名,字段的数据类型和访问权限等)。该库中保存的信息也可以称为MySQL的数据字典或系统目录。 在每个MySQL 实例中都有一个独立的information_schema,用来存储MySQL实例中所有其他数据库的基本信息。information_schema数据库下包含多个只读表(非持久表),所以在磁盘中的数据目录下没有对应的关联文件,且不能对这些表设置触发器。虽然在查询时可以使用USE语句将默认数据库设置为information_schema,但该库下的所有表是只读的,不能执行INSERT、UPDATE、DELETE等数据变更操作。 针对information
  • Python中的单例模式的几种实现方式的及优化
    Python中的单例模式的几种实现方式的及优化 原文地址: https://www.cnblogs.com/huchong/p/8244279.html 阅读目录(Content) 单例模式 实现单例模式的几种方式 相关知识 实现单例模式 1.使用模块 2.使用装饰器 3.使用类 4.基于__new__方法实现(推荐使用,方便) 5.基于metaclass方式实现 回到顶部(go to top) 单例模式 单例模式(Singleton Pattern) 是一种常用的软件设计模式,该模式的主要目的是确保 某一个类只有一个实例存在 。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。比如,某个服务器程序的配置信息存放在一个文件中,客户端通过一个 AppConfig 的类来读取配置文件的信息。如果在程序运行期间,有很多地方都需要使用配置文件的内容,也就是说,很多地方都需要创建 AppConfig 对象的实例,这就导致系统中存在多个 AppConfig 的实例对象,而这样会严重浪费内存资源,尤其是在配置文件内容很多的情况下。事实上,类似 AppConfig 这样的类,我们希望在程序运行期间只存在一个实例对象。在 Python 中,我们可以用多种方法来实现单例模式 回到顶部(go to top) 实现单例模式的几种方式 1.使用模块 2.使用装饰器 3.使用类 4.基于_
  • MySQL默认数据库之mysql库
    MySQL默认数据库之mysql库 参考链接如下: https://dev.mysql.com/doc/refman/5.7/en/grant-tables.html MySQL 访问权限系统表包含如下几张表: user:包含用户帐户和全局权限和其他非权限列表(安全配置选项和资源控制选项列) db:数据库级别的权限表 tables_priv:表级别的权限表 columns_priv:列级权限表 procs_priv:存储过程和函数权限表 proxies_priv:代理用户权限表 PS: 要更改权限表的内容,推荐使用帐号管理语句(如:CREATE USER、GRANT、REVOKE等)来间接修改,不建议直接使用DML语句修改权限表,否则后果自负 以下内容主要针对MySQL 5.7版本进行整理 1、user 该表提供查询全局权限信息,该表中的帐号密码信息在认证1阶段(关于认证阶段相关的内容我们会在下一期进行介绍)决定着是否允许用户连接,对于通过帐号密码认证阶段的连接,如果同时通过user表中的权限检查,那么就代表着该用户拥有全局权限,该表中记录的权限信息代表着用户是否拥有该实例下所有数据库的相应全局权限 注意:在user表中有任意一个权限列为Y的,就被认为拥有全局权限,所以用户在使用show databases或者使用information_schema的schemata表查询时
  • MySQL 的 help 命令
    MySQL 的 help 命令 在数据库的日常维护过程中,如果突然忘记某个SQL或者说某个管理命令如何拼写的时候,一定首先想到的就是使用"help xxx" 语句来查看MySQL 自带的帮助信息。但你一定或多或少能碰到这样的场景:记不清某个语句的具体拼写了,只能模糊的记得几个字母,或者说很清楚知道想要查什么帮助信息,但是却不知道用什么关键字来查询帮助信息(例如:想要查看解析relaylog的SQL语句)。 要想知道怎么办,那得全面了解MySQL 提供的帮助系统,下面,我们将带领大家一窥庐山真面目! 01 help 语句信息从哪里取的 MySQL Server提供4张表用于保存服务端的帮助信息(使用help语法查看的帮助信息),这些表位于mysql 系统字典库下。help 语句就是从这些表中获取数据并返回给客户端,如下: help_category:关于帮助主题类别的信息 help_keyword:与帮助主题相关的关键字信息 help_relation:帮助关键字信息和主题信息之间的映射 help_topic:帮助主题的详细内容 02 help 语句信息何时产生的 这些表在数据库初始化时通过加载share/fill_help_tables.sql文件创建,如果是在Unix上使用二进制或源代码发行版安装MySQL,则在初始化数据目录时会直接导入该文件对帮助表内容进行初始化
  • java淘淘商城_淘淘商城-张志君分布式电商视频教程 下载
    淘淘商城-张志君分布式电商视频教程 下载 【已看-实用】上海传智播客_29期_张志君老师_淘淘商城_大型分布式电商项目 |____自我介绍.txt |____上海传智JavaEE就业29期(20160419面授).xls |____workspace(项目源码).zip |____taotao.sql |____课前资料 |____day16(拔高--Redis集群、Tomcat优化、MySQL优化) |____day15(淘淘商城14 - 分组实战 + 项目总结以及就业指导) |____day14(淘淘商城13 - 分组实战) |____day13(淘淘商城12 - 分组实战) |____day12(淘淘商城11 - 分布式部署架构讲解以及实施) |____day11(淘淘商城10 - dubbo入门、优化单点登录系统) |____day10(淘淘商城09 - 实现购物车、读写分离) |____day09(淘淘商城08 - MQ学习、改造搜索、商品详情缓存逻辑) |____day08(淘淘商城07 - Solr入门以及搜索系统实现) |____day07(淘淘商城06 - 订单系统、Quartz入门) |____day06(淘淘商城05 - 单点登录系统) |____day05(淘淘商城04 - Redis入门) |____day04(淘淘商城03 - 前台系统搭建、实现
  • Python连接MySQL数据库
    Python连接MySQL http://www.runoob.com/python3/python-mysql-connector.html 由于 MySQL 服务器以独立的进程运行,并通过网络对外服务,所以,需要支持 Python 的 MySQL 驱动来连接到 MySQL 服务器。 MySQL 官方提供了 mysql-connector-python 驱动,但是安装的时候需要给 pip 命令加上参数 --allow-external : $ pip install mysql-connector-python --allow-external mysql-connector-python 如果上面的命令安装失败,可以试试另一个驱动: $ pip install mysql-connector Python 连接到 MySQL 数据库示例: # 导入MySQL驱动: import mysql.connector # 注意把password设为root口令,需要提前创建好lhrdb数据库 conn = mysql.connector.connect(user='root', password='lhr', database='lhrdb',host='127.0.0.1',port=3306) cursor = conn.cursor() # 创建user表: cursor
  • MySQL之mysqlcheck、check、optimize和analyze
    MySQL之mysqlcheckcheck、optimize和analyze ㈠ optimize optimize可以回收空间、减少碎片、提高I/O 目前支持的存储引擎有:InnoDB、MyASIM和ARCHIVE 如果是Replication环境、可加NO_WRITE_TO_BINLOG(或者LOCAL、意思完全相同)、比如: optimize local table table_name; 以下是一个简单测试: [plain] view plain copy [mysql@odd employees]$ ls -alh t.ibd -rw-rw---- 1 mysql dba 24M 05-22 16:48 t.ibd 未optimize前、有24M mysql> optimize table t; +-------------+----------+----------+-------------------------------------------------------------------+ | Table | Op | Msg_type | Msg_text | +-------------+----------+----------+--------------------------------------------------------------