JAVA向数据库查询数据:java通过socket把http协议发送网卡,网卡通过对3306端口的监听收到来自Java进程的http请求(数据库也是http协议),通过3306端口把请求发送给了msql,mysql解析http请求得到sql字符串,然后mysql去磁盘中查询对应的表文件,把表文件或者索引加载到内存中,mysql对表文件中的信息进行筛选,最终得到查询结果,mysql根据建立的连接,然后再通过socket传输到端口,通过3306端口将处理结果返回给Java进程
创建索引的时候会把 这个字段的数据生成索引文件,索引文件包括:索引列数据和行地址,然后调用时会加载到内存当中,
在内存中把索引文件恢复成一个平衡树结构,树结构会给索引文件里面的数据排序变有序,然后通过树结构查找到我们需要的数据,然后把数据所在的行地址拿出来直接去磁盘表文件上定位到
java向数据库增删改数据:java通过socket把http协议发送网卡,网卡通过对3306端口的监听收到来自Java进程的http请求(数据库也是http协议),网卡确定是3306端口后会把数据放入到内存的数据库中,通过3306端口把请求发送给了msql,mysql解析http请求得到sql字符串,然后磁盘把磁盘中数据库需要插入的表加载到数据库的内存中,然后数据库把java传入的数据整合到表中后再加载到磁盘中,至少经过两次磁盘IO操作,而两次磁盘的IO操作需要消耗时间,假设消失10ms,此时如果是单线程的话,CPU就需要等待10ms,产生了严重的CPU时间的浪费,CPU在多线程下,等待的时候会切换线程,浪费的时间会降低,

1154

被折叠的 条评论
为什么被折叠?



