最新MySQL中最新MyISAM与InnoDB的详细区别

分类:Database, 发布于 2019-09-20  浏览(123)

一、不同点

1. InnoDB支持事物,而MyISAM不支持

2. InnoDB支持行级锁,而MyISAM支持表级锁

3. InnoDB支持MVCC, 而MyISAM不支持

4. InnoDB支持外键,而MyISAM不支持

5. InnoDB不支持全文索引,而MyISAM支持。

6. InnoDB不能通过直接拷贝表文件的方法拷贝表到另外一台机器, MyISAM支持

7. InnoDB表支持多种行格式, MyISAM不支持

8. InnoDB是索引组织表, MyISAM是堆表


二、InnoDB引擎的4大特性

1. 插入缓冲(insert buffer)

2. 二次写(double write)

3. 自适应哈希索引(ahi)

4. 预读(read ahead)


三、各种不同 MySQL版本的InnoDB的改进

MySQL5.6 下 InnoDB 引擎的主要改进:

1. online DDL

2. memcached NoSQL 接口

3. transportable tablespace( alter table discard/import tablespace)

4. MySQL 正常关闭时,可以 dump 出 buffer pool 的( space, page_no),重启时 reload,加快预热速度

5. 索引和表的统计信息持久化到 mysql.innodb_table_stats 和mysql.innodb_index_stats,可提供稳定的执行计划

6. Compressed row format 支持压缩表


MySQL 5.7 InnoDB引擎主要改进

1. 修改 varchar 字段长度有时可以使用 online DDL

2. Buffer pool 支持在线改变大小

3. Buffer pool 支持导出部分比例

4. 支持新建 InnoDBtablespace,并可以在其中创建多张表

5. 磁盘临时表采用 InnoDB 存储,并且存储在 InnoDB temp tablespace 里面,以前是 MyISAM 存储

6. 透明表空间压缩功能


四、2者select  count(*)哪个更快,为什么

MyISAM更快,因为MyISAM内部维护了一个计数器,可以直接调取。


五、2 者的索引的实现方式

都是 B+树索引, InnoDB是索引组织表, MyISAM是堆表, 索引组织表和堆表的区别要熟悉

MySQL之drop、delete、truncate的区别

分类:Database, 发布于 2019-09-20  浏览(110)

一、不同点

1.truncate table 和 delete只删除记录不删除表的结构,drop语句将删除表的结构依赖的约束(constrain),触发器(trigger),索引(index);

语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index);依赖于该表的存储过程/函数将保留,但是变为invalid状态 

2.truncate之后的自增字段从头开始计数了,而delete的仍保留原来的最在数值。

 

二、总结:

1.在速度上,一般来说,drop> truncate > delete。

2.在使用drop和truncate时一定要注意,虽然可以恢复,但为了减少麻烦,还是要慎重。

3.如果想删除部分数据用delete,注意带上where子句,回滚段要足够大;
如果想删除表,当然用drop;
如果想保留表而将所有数据删除,如果和事务无关,用truncate即可;
如果和事务有关,或者想触发trigger,还是用delete
如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据

Ubuntu 16.04搭建本地Git服务器

分类:Linux, 发布于 2018-12-21  浏览(507)

为了下次快速使用,在些做个记录。

1、安装Git

sudo apt-get install git

2、创建用户git

sudo useradd -m git

3、禁止git用户shell登录

编辑/etc/passwd,修改git用户为以下:

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

4、创建仓库

sudo mkdir /home/git/repositories
sudo chown git:git /home/git/repositories -R
sudo chmod 755 /home/git/repositories

5、各户端名密码登录认证

将客户端的id_rsa.pub文件加入到authorized_keys中。

VS Code添加emmet支持vue文件

分类:Web前端, 发布于 2018-12-19  浏览(424)

如题,

在File->Preferences->Settings中搜索emmet.includeLanguages,编辑user settings文件,添加

{
  "emmet.triggerExpansionOnTab": true,
  "emmet.includeLanguages": {
    "vue-html": "html",
    "vue": "html"
  }
}

重新打开VS Code即可。

简述观察者模式

分类:PHP, 发布于 2018-04-27  浏览(613)

观察者模式是对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

image.png

DEMO:

/**
 * Class EventGenerator
 */
abstract class EventGenerator
{
    private $ObServers = [];

    //增加观察者
    public function add(ObServer $ObServer) {
        $this->ObServers[] = $ObServer;
    }

    //事件通知
    public function notify() {
        foreach ($this->ObServers as $ObServer) {
            $ObServer->update();
        }
    }
}

interface ObServer
{
    public function update($event_info = null);
}

class ObServer1 implements ObServer {
    public function update($event_info=null) {
        echo "ObServer1";
    }
}

class ObServer2 implements ObServer {
    public function update($event_info=null) {
        echo "ObServer2";
    }
}

class Event extends EventGenerator {
    public function trigger() {
        $this->notify();
    }
}

$event = new Event();
$event->add(new ObServer1());
$event->add(new ObServer2());
$event->trigger();


windows创建桌面FTP快捷方式

分类:其他, 发布于 2018-04-17  浏览(552)

1.首先在桌面上建立个快捷方式,右键-新建快捷方式

2.输入 %SystemRoot%\explorer.exe ftp://用户:密码@ftp地址