• MySQL实战积累


    1.mysql两种主流存储引擎:Innodb引擎、MyIASM引擎

      应用场景:

        InnoDB用于事务处理,具有ACID事务支持等特性,如果在应用中执行大量insert和update操作,应该选择InnoDB

        MyIASM管理非事务表,提供高速存储和检索以及全文搜索能力,如果再应用中执行大量select操作,应该选择MyIASM

       mysql部分系统表采用MyIASM存储引擎

    2.通过事物批量插入数据

    List<string> sqlList = new List<string>();
    string sql = "Insert/Delete/Update ...";
    sqlList.Add(sql);//此处拼接增删改语句,通过事物一次提交
    MySqlDBHelper.ExecuteTransaction(sqlList);
    

     3.LOCK TABLE  表名  READ/WRITE      UNLOCK TABLES

    4.索引

    索引是表的索引目录,在查找内容之前先查目录中查找索引位置,从而快速定位查询数据;可以理解成新华字典中的索引;索引会保存在额外的文件中。

    一般的索引种类及功能:

    普通索引:仅加速查询

    唯一索引:加速查询 + 列值唯一(可以有null)

    主键索引:加速查询 + 列值唯一 + 表中只有一个(不可以有null)

    组合索引:多列值组成一个索引,专门用于组合搜索,其效率大于索引合并

    全文索引:对文本的内容进行分词,进行搜索

    索引合并:使用多个单列索引组合查询搜索

    覆盖索引:select的数据列只用从索引中就能够取得,不必读取数据行,换句话说查询列要被所建的索引覆盖

    http://www.cnblogs.com/lyhabc/p/3691555.html 

    对已有表添加索引

    第一种语法:
    CREATE  索引类型    索引名     ON   表名 (字段名)
    第二种语法:
     ALTER TABLE 表名 ADD  索引类型   索引名 (字段名)
      
     示例:
    CREATE INDEX index_emp_name on emp1(name);
    ALTER TABLE emp2 ADD UNIQUE INDEX index_bank_num(band_num);
    

    删除索引

    语法:
    DROP INDEX 索引名 on 表名
    DROP INDEX index_emp_name on emp1;
    DROP INDEX bank_num on emp2;

    5.show processlist

     6.复制表的内容

    create table emp_bak (select * from emp)
    

    7.查询的顺序如下

    FROM  ,ON ,  WHERE, SELECT ,  GROUP  BY ,  ORDER BY   ,HAVING
    

    8.mysql最大连接数

    查看最大连接数

    show variables like '%max_connections%';

    第一种修改最大连接数(这种方式有个问题,就是设置的最大连接数只在mysql当前服务进程有效,一旦mysql重启,又会恢复到初始状态。因为mysql启动后的初始化工作是从其配置文件中读取数据的,而这种方式没有对其配置文件做更改。)

    set GLOBAL max_connections = 200;

    第二种通过修改配置文件来修改mysql最大连接数(max_connections)。

    这种方式说来很简单,只要修改MySQL配置文件my.ini 或 my.cnf的参数max_connections,将其改为max_connections=1000,然后重启MySQL即可。

    9.把password_expired 改成不过期

    update user set password_expired='N' where user='root';
    flush privileges;
    quit
    

    10.巧用CAS解决数据一致性问题

      高并发“查询并修改”的场景,可以用CAS(Compare and Set)的方式解决数据一致性问题。对应到业务,即在set的时候,加上初始条件的比对。

      并发操作发生时:

      业务1执行 => UPDAtE t_yue SET money=28 WHERE uid=$uid AND money=100

      业务2执行 => UPDAtE t_yue SET money=38 WHERE uid=$uid AND money=100

    11.表必备三字段: id, gmt_create, gmt_modified。

        永远为每张表设置一个ID做为其主键,而且最好的是一个INT型的(推荐使用UNSIGNED),并设置上自动增加的AUTO_INCREMENT标志。就算是你 users表有一个主键叫 “email”的字段,你也别让它成为主键。使用 VARCHAR 类型来当主键会使用得性能下降。

    12.解决修改datadir路径后无法启动问题

    如果在Windows系统中datadir路径后无法启动问题,报错1067错误,可以使用下列方法解决:

    在新创建的data文件夹上右键,选择“属性”->“安全”,在组和用户(G)中添加NETWORK SERVICE即可。

    13.设计表时不允许空值

         通过声明列“NOT NULL”来实现这一点

    14.MySQL中lock tables和unlock tables浅析

    15.使用join链接代替子查询

  • 相关阅读:
    数据请求加密
    小程序获取用户的信息
    poi excel导出单元格写保护设置
    hadoop eclipse开发时报错
    RC4算法
    python的闭包
    Vulnerability of SSL to ChosenPlaintext Attack 读书报告
    SSL/TLS/WTLS
    python3程序开发指南——第1章 笔记
    centos6.4中文输入法
  • 原文地址:https://www.cnblogs.com/cnki/p/5231777.html
Copyright © 2020-2023  润新知