廖雪峰历时3个月打磨出价值1980的数据分析教程,终终终于免费啦!

文章目录
  1. 1. Mysql数据库
    1. 1.0.1. mysql数据库优化
    2. 1.0.2. MySQL数据引擎
    3. 1.0.3. SQL注入攻击

Mysql数据库

mysql数据库优化

  1. 利用LIMIT 1取得唯一行,这样数据库引擎发现只有1后将停止扫描,而不是去扫描整个表或索引。
  2. 保证连接的索引是相同的类型
  3. 不要使用BY RAND()命令,MySQL可能会为表中每一个独立的行执行BY RAND()命令(这会消耗处理器的处理能力),
    然后给你仅仅返回一行。
  4. 尽量避免SELECT *命令:从表中读取越多的数据,查询会变得更慢。
  5. 准备好的sql语句
  6. 视情况确定存储类型
  7. 永远为每张表设置一个ID
  8. 使用ENUM而不是VARCHAR,ENUM类型是非常快和紧凑的。
  9. 无缓冲的查询
  10. 固定长度的表会更快,表中没有如下类型的字段: VARCHAR,TEXT,BLOB,则为固定长度的表
  11. 垂直分割,垂直分割是一种把数据库中的表按列变成几张表的方法,这样可以降低表的复杂度和字段的数目,从而达到优化的目的。

MySQL数据引擎

  • InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定。
  • 基本差别:

    MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。
    MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持以及外部键等高级数据库功能。

  • MyIASM是IASM表的新版本,有如下扩展:

    二进制层次的可移植性。 
    NULL列索引。 
    对变长行比ISAM表有更少的碎片。 
    支持大文件。
    更好的索引压缩。
    更好的键吗统计分布。
    更好和更快的auto_increment处理。
    

SQL注入攻击

  • 程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。
  • 例子:

    某个网站的登录验证的SQL查询代码为:
    1
    strSQL = "SELECT * FROM users WHERE (name = '" + userName + "')
     and (pw = '"+ passWord +"');" 
    恶意填入
    1
    userName = "1' OR '1'='1";
    与
    1
    passWord = "1' OR '1'='1";
    时,将导致原本的SQL字符串被填为
    1
    strSQL = "SELECT * FROM users WHERE (name = '1' OR '1'='1') and
     (pw = '1' OR '1'='1');"
    也就是实际上运行的SQL命令会变成下面这样的
    1
    strSQL = "SELECT * FROM users;"
    因此达到无账号密码,亦可登录网站。所以SQL注入攻击被俗称为黑客的填空游戏。
    
  • 应对办法(数据库防火墙,虚拟补丁技术)

    从安全技术手段上来说,可以通过数据库防火墙实现对SQL注入攻击的防范,因为SQL注入攻击往往是通过应用程序来进攻,可以使用虚拟补丁技术实现对注入攻击的SQL特征识别,实现实时攻击阻断。


科学上网(翻墙)教程!

更多精彩内容,请扫描二维码关注公众号:轮子工厂,公众号内回复:

1.回复【图书】:获取15本新手自学编程,零基础入门经典学习教材;
2.回复【我要造轮子】:获取100多本计算机类经典书籍;
3.回复【开发工具】:获取几大主流编程语言的开发工具~
4.回复【内推】:可帮你内推到大厂工作。
文章目录
  1. 1. Mysql数据库
    1. 1.0.1. mysql数据库优化
    2. 1.0.2. MySQL数据引擎
    3. 1.0.3. SQL注入攻击